Hi! On Sun, Nov 25, 2018 at 10:46:28PM +1030, Alan Modra wrote: > Once upon a time CONST_DOUBLE was used to hold large integer constants > that didn't fit into a CONST_INT. Now that CONST_INT is always at > least 64 bits, and the rs6000 backend uses CONST_WIDE_INT for larger > integers, there is no need for old code dealing with integers in > CONST_DOUBLE. The rs6000 backend also doesn't create DImode subregs > of TFmode CONST_DOUBLE, as once we did. This patch cleans up a few > leftovers from the past. > > Bootstrapped etc. powerpc64le-linux, and powerpc64-linux testing > both -m32 and -m64. > > * config/rs6000/predicates.md (easy_fp_constant): Remove code > dealing with integers in const_double. Assert on unexpected > modes. > * config/rs6000/rs6000.c (rs6000_emit_move): Comment fixes. > Don't call easy_fp_constant for Pmode. > (rs6000_hash_constant): Remove code dealing with integers in > const_double. > (rs6000_legitimate_constant_p): Likewise. > (output_toc): Formatting, use CONST_DOUBLE_P.
> diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md > index afe1b286833..9fbeb928fe6 100644 > --- a/gcc/config/rs6000/predicates.md > +++ b/gcc/config/rs6000/predicates.md > @@ -562,12 +562,11 @@ (define_predicate "vsx_reg_or_cint_operand" > (define_predicate "easy_fp_constant" > (match_code "const_double") > { > - if (GET_MODE (op) != mode > - || (!SCALAR_FLOAT_MODE_P (mode) && mode != DImode)) > - return 0; > + gcc_assert (GET_MODE (op) == mode > + && SCALAR_FLOAT_MODE_P (mode)); Just put it on one line then? > - /* If we are using V.4 style PIC, consider all constants to be hard. */ > - if (flag_pic && DEFAULT_ABI == ABI_V4) > - return 0; Did you remove this part by accident? It isn't mentioned in the changelog. Okay for trunk if you restore this last part; otherwise, it needs mentioning. Thanks, Segher