• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // PR target/6087
2 // The code that moves around insns emitted by reg-stack to cope with
3 // exception edges lost the REG_DEAD note indicating a pop.  Which
4 // eventually fills up the register stack resulting in Z == NaN.
5 
6 // { dg-do run }
7 // { dg-options "-O" }
8 
9 extern "C" void abort ();
10 
11 struct Base
12 {
~BaseBase13   virtual ~Base() {}
14 };
15 
16 struct Foo : public Base
17 {
18   Foo ();
19 };
20 
21 double x = 3;
22 double y = 4;
23 
bar()24 double bar ()
25 {
26   double z = x*x+y*y;
27   if (z != 25.0)
28     throw 1;
29   return z;
30 }
31 
Foo()32 Foo::Foo ()
33 {
34   bar ();
35 }
36 
main()37 int main ()
38 {
39   try {
40     int i;
41     for (i = 0; i < 10; ++i)
42       new Foo;
43   } catch (...) {
44     abort ();
45   }
46   return 0;
47 }
48