This fixes PR54634, data-ref analysis does not properly model
"reads of global memory" done by pure functions.  So just give
up.

Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

Richard.

2012-09-20  Richard Guenther  <rguent...@suse.de>

        PR tree-optimization/54634
        * tree-data-ref.c (get_references_in_stmt): For now give
        up for pure functions.

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;

Reply via email to