Hi! These issues were caused by the LRA optional reloads support that got reverted later on, but the testcases look to be useful for the testsuite, so I went ahead and checked them all in.
2013-08-27 Jakub Jelinek <ja...@redhat.com> PR rtl-optimization/57860 PR rtl-optimization/57861 PR rtl-optimization/57875 PR rtl-optimization/57876 PR rtl-optimization/57877 * gcc.c-torture/execute/pr57860.c: New test. * gcc.c-torture/execute/pr57861.c: New test. * gcc.c-torture/execute/pr57875.c: New test. * gcc.c-torture/execute/pr57876.c: New test. * gcc.c-torture/execute/pr57877.c: New test. --- gcc/testsuite/gcc.c-torture/execute/pr57860.c.jj 2013-08-27 11:16:33.262457070 +0200 +++ gcc/testsuite/gcc.c-torture/execute/pr57860.c 2013-08-27 11:15:19.000000000 +0200 @@ -0,0 +1,25 @@ +/* PR rtl-optimization/57860 */ + +extern void abort (void); +int a, *b = &a, c, d, e, *f = &e, g, *h = &d, k[1] = { 1 }; + +int +foo (int p) +{ + for (;; g++) + { + for (; c; c--); + *f = *h = p > ((0x1FFFFFFFFLL ^ a) & *b); + if (k[g]) + return 0; + } +} + +int +main () +{ + foo (1); + if (d != 1) + abort (); + return 0; +} --- gcc/testsuite/gcc.c-torture/execute/pr57861.c.jj 2013-08-27 11:12:46.882684096 +0200 +++ gcc/testsuite/gcc.c-torture/execute/pr57861.c 2013-08-27 11:12:07.000000000 +0200 @@ -0,0 +1,33 @@ +/* PR rtl-optimization/57861 */ + +extern void abort (void); +short a = 1, f; +int b, c, d, *g = &b, h, i, j; +unsigned int e; + +static int +foo (char p) +{ + int k; + for (c = 0; c < 2; c++) + { + i = (j = 0) || p; + k = i * p; + if (e < k) + { + short *l = &f; + a = d && h; + *l = 0; + } + } + return 0; +} + +int +main () +{ + *g = foo (a); + if (a != 0) + abort (); + return 0; +} --- gcc/testsuite/gcc.c-torture/execute/pr57875.c.jj 2013-08-27 11:06:09.256786405 +0200 +++ gcc/testsuite/gcc.c-torture/execute/pr57875.c 2013-08-27 11:04:58.000000000 +0200 @@ -0,0 +1,21 @@ +/* PR rtl-optimization/57875 */ + +extern void abort (void); +int a[1], b, c, d, f, i; +char e[1]; + +int +main () +{ + for (; i < 1; i++) + if (!d) + { + if (!c) + f = 2; + e[0] &= f ^= 0; + } + b = a[e[0] >> 1 & 1]; + if (b != 0) + abort (); + return 0; +} --- gcc/testsuite/gcc.c-torture/execute/pr57876.c.jj 2013-08-27 11:06:12.224775684 +0200 +++ gcc/testsuite/gcc.c-torture/execute/pr57876.c 2013-08-27 11:04:20.000000000 +0200 @@ -0,0 +1,27 @@ +/* PR rtl-optimization/57876 */ + +extern void abort (void); +int a, b = 1, c, *d = &c, f, *g, h, j; +static int e; + +int +main () +{ + int i; + for (i = 0; i < 2; i++) + { + long long k = b; + int l; + for (f = 0; f < 8; f++) + { + int *m = &e; + j = *d; + h = a * j - 1; + *m = (h == 0) < k; + g = &l; + } + } + if (e != 1) + abort (); + return 0; +} --- gcc/testsuite/gcc.c-torture/execute/pr57877.c.jj 2013-08-27 11:06:15.310759088 +0200 +++ gcc/testsuite/gcc.c-torture/execute/pr57877.c 2013-08-27 11:03:56.000000000 +0200 @@ -0,0 +1,28 @@ +/* PR rtl-optimization/57877 */ + +extern void abort (void); +int a, b, *c = &b, e, f = 6, g, h; +short d; + +static unsigned char +foo (unsigned long long p1, int *p2) +{ + for (; g <= 0; g++) + { + short *i = &d; + int *j = &e; + h = *c; + *i = h; + *j = (*i == *p2) < p1; + } + return 0; +} + +int +main () +{ + foo (f, &a); + if (e != 1) + abort (); + return 0; +} Jakub