On 06/06/12 17:03, Artur Skawina wrote:
> I know. What I'm saying is that omitting the "noinline" attribute causes
> the "pure" function, like s.f() above, to be called twice. Add the
> "noinline" back, with no other changes - and it gets called only once.

What i mean by "called" in this case is of course that the code runs
twice when inlined. I was testing with impure bodies, did another test
right now, and it seems that it may only happen in that case. But it's
hard to tell, as the compiler manages to optimize the really pure inlined
parts well. It's just surprising that program behavior changes depending
on the availability of function bodies. If this only happens for "illegal"
code it's of course not a problem. It does mean that things like debug
output change based on inlining decisions though.

artur

Reply via email to