diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/torture/pr42871.C')
-rw-r--r-- | gcc/testsuite/g++.dg/torture/pr42871.C | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/torture/pr42871.C b/gcc/testsuite/g++.dg/torture/pr42871.C new file mode 100644 index 000000000..452ad9319 --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr42871.C @@ -0,0 +1,40 @@ +struct C +{ + ~C (); + int c3; +}; + +C *b2; + +static void +b1 (const C &x, unsigned b3, unsigned b4) +{ + unsigned i = 0; + for (; i < b3; i++) + if (i < b4) + { + b2[0].c3 = x.c3; + return; + } +} + +int a (); + +void +bar (unsigned b3, unsigned b4) +{ + C c[100]; + for (int i = 0; i < 100; i++) + { + c[i].c3 = i; + for (int j = 0; j < b3; j++) + if (j < b4) + { + b2[0].c3 = 0; + break; + } + b1 (c[i], b3, b4); + a (); + } +} + |