aboutsummaryrefslogtreecommitdiff
path: root/gcc/explow.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@linaro.org>2017-08-30 11:20:47 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2017-08-30 11:20:47 +0000
commit79d22165ea45e89283ccf147d65cbf66548838da (patch)
tree812a87db01df4c4e3e81d00d580cdff5c4ba3814 /gcc/explow.c
parent005ba29c18d3f9a2c9a3dd40c6dee0b87ff504c5 (diff)
downloadgcc-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
Diffstat (limited to 'gcc/explow.c')
-rw-r--r--gcc/explow.c7
1 files changed, 5 insertions, 2 deletions
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: