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

Reply via email to