------- Comment #3 from hjl at lucon dot org  2007-08-25 23:29 -------
A smaller testcase:

[EMAIL PROTECTED] cmov-1]$ cat cmov.cc
extern "C" void abort (void);

enum Status
{
  P_ON_LOWER = -4,
  P_ON_UPPER = -2,
  P_FREE = -1,
};

void
foo (enum Status & stat, double newUpper, double lower, double max)
{
  if (stat == P_ON_UPPER)
    {
      if (newUpper >= max)
        stat = (lower <= -max) ? P_FREE : P_ON_LOWER;
      else if (newUpper == lower)
        stat = P_ON_LOWER;
    }
}

int
main ()
{
  enum Status stat = P_ON_UPPER;
  foo (stat, 5.000000e+01, -1.000000e+100, 1e100);
  if (stat != P_ON_UPPER)
    abort ();
  return 0;
}
[EMAIL PROTECTED] cmov-1]$ make
/export/gnu/import/rrs/127766/usr/bin/g++ -O2 -g   -c -o cmov.o cmov.cc
/export/gnu/import/rrs/127766/usr/bin/g++ -static -o cmov cmov.o
./cmov
make: *** [all] Aborted
[EMAIL PROTECTED] cmov-1]$


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33181

Reply via email to