From: Jakub Jelinek Date: Thu, 7 Apr 2011 21:25:47 +0000 (+0200) Subject: re PR tree-optimization/46491 (ipa-pure-const.c miscompilation) X-Git-Tag: releases/gcc-4.4.6~53 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=438d2301bab3821bbe08e6bd2b328c8ec9a924f4;p=thirdparty%2Fgcc.git re PR tree-optimization/46491 (ipa-pure-const.c miscompilation) PR tree-optimization/46491 Backported from mainline 2010-05-14 Jan Hubicka * ipa-pure-const.c (check_stmt): Do not use memory_identifier_string. 2011-04-07 Jakub Jelinek Backported from mainline 2010-11-15 Jakub Jelinek PR tree-optimization/46491 * gcc.target/i386/pr46491.c: New test. From-SVN: r172129 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6f42264284c5..f28377a9623e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2011-04-07 Jakub Jelinek + + PR tree-optimization/46491 + Backported from mainline + 2010-05-14 Jan Hubicka + + * ipa-pure-const.c (check_stmt): Do not use memory_identifier_string. + 2011-03-30 H.J. Lu Backport from mainline diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c index f21638f383eb..4f84fb6fc1e6 100644 --- a/gcc/ipa-pure-const.c +++ b/gcc/ipa-pure-const.c @@ -360,7 +360,7 @@ get_asm_expr_operands (funct_state local, gimple stmt) for (i = 0; i < gimple_asm_nclobbers (stmt); i++) { op = gimple_asm_clobber_op (stmt, i); - if (simple_cst_equal(TREE_VALUE (op), memory_identifier_string) == 1) + if (strcmp (TREE_STRING_POINTER (TREE_VALUE (op)), "memory") == 0) /* Abandon all hope, ye who enter here. */ local->pure_const_state = IPA_NEITHER; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 78953d898b12..d4904a60e2c6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2011-04-07 Jakub Jelinek + + Backported from mainline + 2010-11-15 Jakub Jelinek + + PR tree-optimization/46491 + * gcc.target/i386/pr46491.c: New test. + 2011-03-09 Jason Merrill * g++.dg/template/nontype22.C: New. diff --git a/gcc/testsuite/gcc.target/i386/pr46491.c b/gcc/testsuite/gcc.target/i386/pr46491.c new file mode 100644 index 000000000000..cd4c3f2ba1ef --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr46491.c @@ -0,0 +1,22 @@ +/* PR tree-optimization/46491 */ +/* { dg-do run } */ +/* { dg-options "-O2 -fno-ipa-reference" } */ + +extern void abort (void); + +__attribute__((noinline)) int +foo (int *p) +{ + int r; + asm ("movl $6, (%1)\n\txorl %0, %0" : "=r" (r) : "r" (p) : "memory"); + return r; +} + +int +main (void) +{ + int p = 8; + if ((foo (&p) ? : p) != 6) + abort (); + return 0; +}