People complain about dead code elimination all the time when we have these discussions.
Inlining break code that try to read the return address off the stack frame or that make assumptions about stack layout.
Loop unrolling might change the order of stores and load, which is visible behaviour if any of those traps.
I assure you that for each optimization, no matter how trivial, it will break someone code