http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54556
--- Comment #4 from Joost VandeVondele <Joost.VandeVondele at mat dot ethz.ch> 2012-09-12 20:26:49 UTC --- (In reply to comment #3) > (In reply to comment #2) > > some progress.. the object file that leads to wrong results is > > parallel_rng_types.o. I'll see if I can get some further insight. > > It seems that - for some reason - IMPLICIT_PURE is only set for functions. (Or > at least that's here the case for a simple test case.) If you produce a > module, > have a look at the .mod file and search for IMPLICIT_PURE. In my example I > have > something like: > 3 's' 'm' '' 1 ((PROCEDURE [...] FUNCTION IMPLICIT_PURE) [...] > > where "s" is the name of my function and "m" is the name of the module. Then, > check whether that procedure could be PURE or has to be IMPURE. yes, I think from looking at the optimized dumps, I can see that a function that is called twice in the correct version is called only once in the wrong version. I think I might be able to reduce it to a testcase. (If you care, the function is rn53 which calls rn32 only once, so I guess that's the issue).