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; } is miscompiled with -O2 in 4.5 (and with -O2 -fno-ipa-reference in 4.1/4.2/4.3/4.4).
Author: jakub Date: Mon Nov 15 22:27:24 2010 New Revision: 166774 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=166774 Log: PR tree-optimization/46491 Backport from mainline 2010-05-14 Jan Hubicka <jh@suse.cz> * ipa-pure-const.c (check_stmt): Do not use memory_identifier_string. * gcc.target/i386/pr46491.c: New test. Added: branches/gcc-4_5-branch/gcc/testsuite/gcc.target/i386/pr46491.c Modified: branches/gcc-4_5-branch/gcc/ChangeLog branches/gcc-4_5-branch/gcc/ipa-pure-const.c branches/gcc-4_5-branch/gcc/testsuite/ChangeLog
Author: jakub Date: Mon Nov 15 22:31:47 2010 New Revision: 166777 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=166777 Log: PR tree-optimization/46491 * gcc.target/i386/pr46491.c: New test. Added: trunk/gcc/testsuite/gcc.target/i386/pr46491.c Modified: trunk/gcc/testsuite/ChangeLog
Fixed for 4.5 so far, testcase applied to trunk as well.
Author: jakub Date: Thu Apr 7 21:25:47 2011 New Revision: 172129 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=172129 Log: PR tree-optimization/46491 Backported from mainline 2010-05-14 Jan Hubicka <jh@suse.cz> * ipa-pure-const.c (check_stmt): Do not use memory_identifier_string. 2011-04-07 Jakub Jelinek <jakub@redhat.com> Backported from mainline 2010-11-15 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/46491 * gcc.target/i386/pr46491.c: New test. Added: branches/gcc-4_4-branch/gcc/testsuite/gcc.target/i386/pr46491.c Modified: branches/gcc-4_4-branch/gcc/ChangeLog branches/gcc-4_4-branch/gcc/ipa-pure-const.c branches/gcc-4_4-branch/gcc/testsuite/ChangeLog
Fixed for 4.4.6.