/* Test for bogus "variable `x' may be clobbered by longjmp" warnings. Inspired by cse.c:simplify_relational_operation. */ /* { dg-do compile } */ /* { dg-options "-O -Wclobbered -Wextra -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" } */ { 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; }