[RS6000] CONST_DOUBLE tidy
Segher Boessenkool
segher@kernel.crashing.org
Wed Nov 28 18:15:00 GMT 2018
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
More information about the Gcc-patches
mailing list