On Tue, Jan 08, 2013 at 05:49:28PM +0100, Jan Hubicka wrote: > --- testsuite/gcc.c-torture/execute/pr55875.c (revision 0) > +++ testsuite/gcc.c-torture/execute/pr55875.c (revision 0) > @@ -0,0 +1,17 @@
Please add /* PR tree-optimization/55875 */ here. > +int a[250]; > +__attribute__ ((noinline)) > +t(int i) > +{ > + if (i==0) > + exit(0); > + if (i>255) > + abort (); > +} > +main() > +{ > + unsigned int i; > + for (i=0;;i++) > + { > + a[i]=t((unsigned char)(i+5)); > + } > +} > Index: testsuite/g++.dg/torture/pr55875.C > =================================================================== > --- testsuite/g++.dg/torture/pr55875.C (revision 0) > +++ testsuite/g++.dg/torture/pr55875.C (revision 0) And // PR tree-optimization/55875 // { dg-do run } here, dg-do compile is the default. > @@ -0,0 +1,53 @@ > +struct A > +{ > + short int a1; > + unsigned char a2; > + unsigned int a3; > +}; > + > +struct B > +{ > + unsigned short b1; > + const A *b2; > +}; > + > +B b; > + > +__attribute__((noinline, noclone)) > +int foo (unsigned x) > +{ > + __asm volatile ("" : "+r" (x) : : "memory"); > + return x; > +} > + > +inline void > +bar (const int &) > +{ > +} > + > +__attribute__((noinline)) void > +baz () > +{ > + const A *a = b.b2; > + unsigned int i; > + unsigned short n = b.b1; > + for (i = 0; i < n; ++i) > + if (a[i].a1 == 11) > + { > + if (i > 0 && (a[i - 1].a2 & 1)) > + continue; > + bar (foo (2)); > + return; There should be tabs on the 4 above lines, just bugzilla ate it. Jakub