From patchwork Thu Sep 20 14:40:49 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Fix PR54634 X-Patchwork-Submitter: Richard Biener X-Patchwork-Id: 185411 Message-Id: To: gcc-patches@gcc.gnu.org Date: Thu, 20 Sep 2012 16:40:49 +0200 (CEST) From: Richard Guenther List-Id: 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 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;