From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- gcc/testsuite/g++.dg/eh/fp-regs.C | 94 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 gcc/testsuite/g++.dg/eh/fp-regs.C (limited to 'gcc/testsuite/g++.dg/eh/fp-regs.C') diff --git a/gcc/testsuite/g++.dg/eh/fp-regs.C b/gcc/testsuite/g++.dg/eh/fp-regs.C new file mode 100644 index 000000000..b91c0f9a5 --- /dev/null +++ b/gcc/testsuite/g++.dg/eh/fp-regs.C @@ -0,0 +1,94 @@ +// PR 20670: f29 corrupted when unwind stack. This tries to test that FP +// registers are properly saved and restored by defining 20 different FP +// local variables. +// { dg-do run } +// { dg-options "-O" } +#include + +double zero = 0.0; +double another_zero = 0.0; + +int +sub (void) +{ + throw (0); +} + +int +main (void) +{ + double a, b, c, d, e, f, g, h, i, j; + double a1, b1, c1, d1, e1, f1, g1, h1, i1, j1; + + a = zero; + b = a + 1; + c = b + 1; + d = c + 1; + e = d + 1; + f = e + 1; + g = f + 1; + h = g + 1; + i = h + 1; + j = i + 1; + + a1 = another_zero; + b1 = a1 + 1; + c1 = b1 + 1; + d1 = c1 + 1; + e1 = d1 + 1; + f1 = e1 + 1; + g1 = f1 + 1; + h1 = g1 + 1; + i1 = h1 + 1; + j1 = i1 + 1; + + try + { + sub (); + } + catch (...) + { + if (a != 0.0) + abort (); + if (b != 1.0) + abort (); + if (c != 2.0) + abort (); + if (d != 3.0) + abort (); + if (e != 4.0) + abort (); + if (f != 5.0) + abort (); + if (g != 6.0) + abort (); + if (h != 7.0) + abort (); + if (i != 8.0) + abort (); + if (j != 9.0) + abort (); + + if (a1 != 0.0) + abort (); + if (b1 != 1.0) + abort (); + if (c1 != 2.0) + abort (); + if (d1 != 3.0) + abort (); + if (e1 != 4.0) + abort (); + if (f1 != 5.0) + abort (); + if (g1 != 6.0) + abort (); + if (h1 != 7.0) + abort (); + if (i1 != 8.0) + abort (); + if (j1 != 9.0) + abort (); + } + return 0; +} -- cgit v1.2.3