http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54634
--- Comment #6 from rguenther at suse dot de <rguenther at suse dot de> 2012-09-20 13:43:33 UTC --- On Thu, 20 Sep 2012, Joost.VandeVondele at mat dot ethz.ch wrote: > > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54634 > > --- Comment #5 from Joost VandeVondele <Joost.VandeVondele at mat dot > ethz.ch> 2012-09-20 13:06:50 UTC --- > (In reply to comment #4) > > Ah, binomial () is pure. > > In this case, it was presumably triggered by Tobias' changes for PR54389. > binomial() has not been declared pure in the source, but most likely correctly > declared 'implicitly pure' but the Fortran frontend. Btw, it's just what triggers the latent bug in data dependence analysis. I am testing Index: gcc/tree-data-ref.c =================================================================== --- gcc/tree-data-ref.c (revision 191561) +++ gcc/tree-data-ref.c (working copy) @@ -4307,10 +4307,10 @@ get_references_in_stmt (gimple stmt, VEC *references = NULL; /* ASM_EXPR and CALL_EXPR may embed arbitrary side effects. - Calls have side-effects, except those to const or pure - functions. */ + As we cannot model data-references to not spelled out + accesses give up if they may occur. */ if ((stmt_code == GIMPLE_CALL - && !(gimple_call_flags (stmt) & (ECF_CONST | ECF_PURE))) + && !(gimple_call_flags (stmt) & ECF_CONST)) || (stmt_code == GIMPLE_ASM && (gimple_asm_volatile_p (stmt) || gimple_vuse (stmt)))) clobbers_memory = true; currently.