Message ID | 20221117174449.825329-1-aldyh@redhat.com |
---|---|
State | New |
Headers | show |
Series | [COMMITTED,PR,tree-optimization/107732,range-ops] Handle attempt to abs() negatives. | expand |
diff --git a/gcc/range-op-float.cc b/gcc/range-op-float.cc index adb0cbaa6d5..ee88511eba0 100644 --- a/gcc/range-op-float.cc +++ b/gcc/range-op-float.cc @@ -1407,7 +1407,7 @@ foperator_abs::op1_range (frange &r, tree type, neg_nan.set_nan (type, true); r.union_ (neg_nan); } - if (r.known_isnan ()) + if (r.known_isnan () || r.undefined_p ()) return true; // Then add the negative of each pair: // ABS(op1) = [5,20] would yield op1 => [-20,-5][5,20]. diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr107732.c b/gcc/testsuite/gcc.dg/tree-ssa/pr107732.c new file mode 100644 index 00000000000..b216f38db0e --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr107732.c @@ -0,0 +1,13 @@ +// { dg-do compile } +// { dg-options "-O2" } + +double sqrt(double); +double a, b, c; +void d() { + for (;;) { + c = __builtin_fabs(a); + sqrt(c); + if (a) + a = b; + } +}