On Tue, 2023-11-14 at 11:44 +0100, Richard Biener wrote: > > diff --git a/gcc/simplify-rtx.cc b/gcc/simplify-rtx.cc > > index 2d2e5a3c1ca..f3745d86aea 100644 > > --- a/gcc/simplify-rtx.cc > > +++ b/gcc/simplify-rtx.cc > > @@ -4392,7 +4392,7 @@ simplify_ashift: > > real_convert (&f1, mode, CONST_DOUBLE_REAL_VALUE (trueop1)); > > rtx tmp = simplify_gen_unary (ABS, mode, op0, mode); > > if (REAL_VALUE_NEGATIVE (f1)) > > - tmp = simplify_gen_unary (NEG, mode, tmp, mode); > > + tmp = simplify_unary_operation (NEG, mode, tmp, mode); > > return tmp; > > } > > shouldn't that be when either the ABS or the NEG simplify?
Simplify (copysign x, POSTIVE_CONST) to (abs x) is an optimization. So for a positive f1, tmp will just be (abs x) and we return it. > And I wonder when that happens - I suppose when op0 is CONST_DOUBLE only? Yes, it's Andrew's intention. -- Xi Ruoyao <xry...@xry111.site> School of Aerospace Science and Technology, Xidian University