From c2b2e000045ac8a9291c05dafc5f6aec7da47dc2 Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Sun, 14 Mar 1999 09:18:03 +0000 Subject: [PATCH] New test, for spurious "variable may be clobbered by `longjmp' or `vfork'" warnings. From-SVN: r25765 --- gcc/testsuite/gcc.dg/setjmp-1.c | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/setjmp-1.c diff --git a/gcc/testsuite/gcc.dg/setjmp-1.c b/gcc/testsuite/gcc.dg/setjmp-1.c new file mode 100644 index 00000000000..85e0fb4261f --- /dev/null +++ b/gcc/testsuite/gcc.dg/setjmp-1.c @@ -0,0 +1,36 @@ +/* Test for bogus "variable `x' may be clobbered by longjmp" warnings. + Inspired by cse.c:simplify_relational_operation. */ + +/* { dg-do compile } */ +/* { dg-options "-O -W -Wall" } */ + +#include + +extern void set_float_handler (jmp_buf *); + +#define EQ 0x01 +#define LT 0x02 +#define GT 0x04 + +int +compare_float (double a, double b) /* { dg-bogus "clobbered" "spurious clobbered warning" { xfail *-*-* } } */ +{ + jmp_buf handler; + int result; + + a += 1.0; + + if (setjmp (handler)) + { + set_float_handler (0); + return 0; + } + + set_float_handler (&handler); + if (a == b) result = EQ; + else if (a > b) result = LT; + else if (a < b) result = GT; + else result = 0; + set_float_handler (0); + return result; +} -- 2.30.2