Conversation

there's a lot I don't understand about optimizers, but is it unreasonable to expect a modern C++ compiler to turn foo() into an add instruction?
Image
13
51
Last time I checked, the GCC dead store elimination also only works for malloc/free and only when the code is buggy and lacks an out-of-memory check. Clang is better at this, but it lacks a way to turn this into a dead store anyway. It can't work with malloc/new directly either.
1
2
So yes, I'm sure it understands that it's just an add. It knows the memory returned from new/malloc doesn't alias anything else. It just has absolutely no way to get rid of it by lowering it to something else and also has no way to get rid of it in a single step. Not implemented.
1
Show replies
In general, they make up their own semantics for C standard library functions. A good example is that Clang doesn't support floating point rounding modes or signalling NaN. It explicitly chooses to implement optimizations incompatible with an implementation of those features.
1
1
Show replies