C does not provide zero-cost abstractions like C++ does. This means for example that the standard library sort in C++ is faster than in C, because it can inline the comparison function.
As for actual zero-cost optimization, Chandler Carruth who works on Clang at Google gave a talk at the 2012 LLVM Developers' Meeting warning people that C++ zero-cost abstractions are more myth than reality, and things developers expect to be zero-cost are often in-fact not. He goes into detail about how the optimizers work and what the challenges are.
http://llvm.org/devmtg/2012-11/videos/Carruth-OptimizingAbst...