diff options
Diffstat (limited to 'gcc-4.8/gcc/testsuite/gcc.dg/torture/pr58143-1.c')
-rw-r--r-- | gcc-4.8/gcc/testsuite/gcc.dg/torture/pr58143-1.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr58143-1.c b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr58143-1.c new file mode 100644 index 000000000..855515edb --- /dev/null +++ b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr58143-1.c @@ -0,0 +1,51 @@ +/* { dg-do run } */ +/* { dg-additional-options "-fstrict-overflow" } */ + +extern void abort (void); + +int a, b, c, d, e, f, g, h = 1, i; + +int foo (int p) +{ + return p < 0 && a < - __INT_MAX__ - 1 - p ? 0 : 1; +} + +int *bar () +{ + int j; + i = h ? 0 : 1 % h; + for (j = 0; j < 1; j++) + for (d = 0; d; d++) + for (e = 1; e;) + return 0; + return 0; +} + +int baz () +{ + for (; b >= 0; b--) + for (c = 1; c >= 0; c--) + { + int *k = &c; + for (;;) + { + for (f = 0; f < 1; f++) + { + g = foo (*k); + bar (); + } + if (*k) + break; + return 0; + } + } + return 0; +} + +int main () +{ + baz (); + if (b != 0) + abort (); + return 0; +} |