http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54231
--- Comment #13 from Thiago Macieira <thiago at kde dot org> 2012-08-13 12:13:40 UTC --- (In reply to comment #12) > Yes, there are similar option-related bugs for this. Note somebody needs > to sit down and document the desired semantics of combining translation > units T1 and T2, compiled with different options OP1 and OP2, at link-time > with > options OP3. Desired semantics including which cross-file optimizations > (inlining?) are possible. >From my (admittedly restrict) point of view, inlining should be possible, provided the following conditions: - when inlining a function with a "lower" optimisation / target setting, apply the outer scope's setting to the inlined code - when inlining a function with a higher target requirement, inlining should be done only in the sense of partial function splitting, prologue, epilogues, constant propagation, etc. In the case that I pasted, for example, I'd like GCC to realise that it has already tested if the counter variable is 0, then forego that test in the inlined, inner function. Worst case scenario, simply forego inlining completely. Then the code would simply be no worse than the non-LTO case.