diff options
author | Richard Sandiford <richard.sandiford@linaro.org> | 2017-08-30 11:20:47 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2017-08-30 11:20:47 +0000 |
commit | 79d22165ea45e89283ccf147d65cbf66548838da (patch) | |
tree | 812a87db01df4c4e3e81d00d580cdff5c4ba3814 | |
parent | 005ba29c18d3f9a2c9a3dd40c6dee0b87ff504c5 (diff) | |
download | gcc-79d22165ea45e89283ccf147d65cbf66548838da.zip gcc-79d22165ea45e89283ccf147d65cbf66548838da.tar.gz gcc-79d22165ea45e89283ccf147d65cbf66548838da.tar.bz2 |
[74/77] Various small scalar_mode changes
This patch uses scalar_mode in a few miscellaneous places:
- Previous patches mean mode_to_vector can take a scalar_mode without
further changes.
- Implicit promotion is limited to scalar types (affects promote_mode
and sdbout_parms)
2017-08-30 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* machmode.h (mode_for_vector): Take a scalar_mode instead
of a machine_mode.
* stor-layout.c (mode_for_vector): Likewise.
* explow.c (promote_mode): Use as_a <scalar_mode>.
* sdbout.c (sdbout_parms): Use is_a <scalar_mode>.
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r251525
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/explow.c | 7 | ||||
-rw-r--r-- | gcc/machmode.h | 2 | ||||
-rw-r--r-- | gcc/sdbout.c | 12 | ||||
-rw-r--r-- | gcc/stor-layout.c | 2 |
5 files changed, 25 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 95e24a3..bc70406 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -2,6 +2,16 @@ Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> + * machmode.h (mode_for_vector): Take a scalar_mode instead + of a machine_mode. + * stor-layout.c (mode_for_vector): Likewise. + * explow.c (promote_mode): Use as_a <scalar_mode>. + * sdbout.c (sdbout_parms): Use is_a <scalar_mode>. + +2017-08-30 Richard Sandiford <richard.sandiford@linaro.org> + Alan Hayward <alan.hayward@arm.com> + David Sherwood <david.sherwood@arm.com> + * target.def (preferred_simd_mode): Take a scalar_mode instead of a machine_mode. * targhooks.h (default_preferred_simd_mode): Likewise. diff --git a/gcc/explow.c b/gcc/explow.c index ee20969..82380f3 100644 --- a/gcc/explow.c +++ b/gcc/explow.c @@ -787,6 +787,7 @@ promote_mode (const_tree type ATTRIBUTE_UNUSED, machine_mode mode, #ifdef PROMOTE_MODE enum tree_code code; int unsignedp; + scalar_mode smode; #endif /* For libcalls this is invoked without TYPE from the backends @@ -806,9 +807,11 @@ promote_mode (const_tree type ATTRIBUTE_UNUSED, machine_mode mode, { case INTEGER_TYPE: case ENUMERAL_TYPE: case BOOLEAN_TYPE: case REAL_TYPE: case OFFSET_TYPE: case FIXED_POINT_TYPE: - PROMOTE_MODE (mode, unsignedp, type); + /* Values of these types always have scalar mode. */ + smode = as_a <scalar_mode> (mode); + PROMOTE_MODE (smode, unsignedp, type); *punsignedp = unsignedp; - return mode; + return smode; #ifdef POINTERS_EXTEND_UNSIGNED case REFERENCE_TYPE: diff --git a/gcc/machmode.h b/gcc/machmode.h index 5d84a2e..b3e79ca 100644 --- a/gcc/machmode.h +++ b/gcc/machmode.h @@ -650,7 +650,7 @@ extern machine_mode bitwise_mode_for_mode (machine_mode); /* Return a mode that is suitable for representing a vector, or BLKmode on failure. */ -extern machine_mode mode_for_vector (machine_mode, unsigned); +extern machine_mode mode_for_vector (scalar_mode, unsigned); /* A class for iterating through possible bitfield modes. */ class bit_field_mode_iterator diff --git a/gcc/sdbout.c b/gcc/sdbout.c index 8fcb977..acd25a3 100644 --- a/gcc/sdbout.c +++ b/gcc/sdbout.c @@ -1281,11 +1281,15 @@ sdbout_parms (tree parms) the parm with the variable's declared type, and adjust the address if the least significant bytes (which we are using) are not the first ones. */ + scalar_mode from_mode, to_mode; if (BYTES_BIG_ENDIAN - && TREE_TYPE (parms) != DECL_ARG_TYPE (parms)) - current_sym_value += - (GET_MODE_SIZE (TYPE_MODE (DECL_ARG_TYPE (parms))) - - GET_MODE_SIZE (GET_MODE (DECL_RTL (parms)))); + && TREE_TYPE (parms) != DECL_ARG_TYPE (parms) + && is_a <scalar_mode> (TYPE_MODE (DECL_ARG_TYPE (parms)), + &from_mode) + && is_a <scalar_mode> (GET_MODE (DECL_RTL (parms)), + &to_mode)) + current_sym_value += (GET_MODE_SIZE (from_mode) + - GET_MODE_SIZE (to_mode)); if (MEM_P (DECL_RTL (parms)) && GET_CODE (XEXP (DECL_RTL (parms), 0)) == PLUS diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index d6c1bb6..6414545 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -478,7 +478,7 @@ bitwise_type_for_mode (machine_mode mode) is no suitable mode. */ machine_mode -mode_for_vector (machine_mode innermode, unsigned nunits) +mode_for_vector (scalar_mode innermode, unsigned nunits) { machine_mode mode; |