diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/torture/pr82291.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr82291.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/torture/pr82291.c b/gcc/testsuite/gcc.dg/torture/pr82291.c new file mode 100644 index 00000000000..daa1665af20 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr82291.c @@ -0,0 +1,37 @@ +/* { dg-do run } */ + +int a, c, d, *h; +unsigned b; + +int *fn1 () +{ + int *f[3], g = 0; + for (; g < 3; g++) + f[g] = &a; + if (--b > a) + { + if (a > b) + d++; + return f[0]; + } +} + +void fn2 () +{ + for (; c >= 0; --c) + { + int j[] = { 0, 0, 0, 0, 0 }; + int *k = fn1 (); + if (!k) + __builtin_abort (); + h = &j[4]; + } +} + +int main () +{ + fn2 (); + if (d != 0) + __builtin_abort (); + return 0; +} |