/* 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 <setjmp.h>

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;
}
