diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C')
-rw-r--r-- | gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C new file mode 100644 index 000000000..62263c0c3 --- /dev/null +++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C @@ -0,0 +1,40 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm32 } */ + +/* Test to catch off-by-one errors in arm/pr-support.c. */ + +#if defined (__VFP_FP__) && !defined (__SOFTFP__) + +#include <iostream> +#include <stdlib.h> + +using namespace std; + +static void donkey () +{ + asm volatile ("fcpyd d9, %P0" : : "w" (1.2345) : "d9"); + throw 1; +} + +int main() +{ + try + { + donkey (); + } + catch (int foo) + { + return 0; + } + return 1; +} + +#else + +int main() +{ + return 0; +} + +#endif + |