Commit e72b0ef4 by Richard Sandiford Committed by Richard Sandiford

[33/77] Add a NARROWEST_INT_MODE macro

This patch replaces uses of GET_CLASS_NARROWEST_MODE (MODE_INT) with a
new NARROWEST_INT_MODE macro, which has type scalar_int_mode.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

gcc/
	* machmode.h (NARROWEST_INT_MODE): New macro.
	* expr.c (alignment_for_piecewise_move): Use it instead of
	GET_CLASS_NARROWEST_MODE (MODE_INT).
	(push_block): Likewise.
	* stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
	Likewise.
	* tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.

gcc/ada/
	* gcc-interface/decl.c (validate_size): Use NARROWEST_INT_MODE
	instead of GET_CLASS_NARROWEST_MODE (MODE_INT).

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>

From-SVN: r251485
parent e05c94ba
...@@ -2,6 +2,18 @@ ...@@ -2,6 +2,18 @@
Alan Hayward <alan.hayward@arm.com> Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com> David Sherwood <david.sherwood@arm.com>
* machmode.h (NARROWEST_INT_MODE): New macro.
* expr.c (alignment_for_piecewise_move): Use it instead of
GET_CLASS_NARROWEST_MODE (MODE_INT).
(push_block): Likewise.
* stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
Likewise.
* tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
2017-08-30 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
* expr.c (expand_expr_real_2): Use scalar_int_mode for the * expr.c (expand_expr_real_2): Use scalar_int_mode for the
double-word mode. double-word mode.
* lower-subreg.c (resolve_shift_zext): Use is_a <scalar_int_mode>. * lower-subreg.c (resolve_shift_zext): Use is_a <scalar_int_mode>.
......
...@@ -2,6 +2,13 @@ ...@@ -2,6 +2,13 @@
Alan Hayward <alan.hayward@arm.com> Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com> David Sherwood <david.sherwood@arm.com>
* gcc-interface/decl.c (validate_size): Use NARROWEST_INT_MODE
instead of GET_CLASS_NARROWEST_MODE (MODE_INT).
2017-08-30 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
* gcc-interface/decl.c (check_ok_for_atomic_type): Use * gcc-interface/decl.c (check_ok_for_atomic_type): Use
is_a <scalar_int_mode>. is_a <scalar_int_mode>.
* gcc-interface/trans.c (Pragma_to_gnu): Likewise. * gcc-interface/trans.c (Pragma_to_gnu): Likewise.
......
...@@ -8574,7 +8574,7 @@ validate_size (Uint uint_size, tree gnu_type, Entity_Id gnat_object, ...@@ -8574,7 +8574,7 @@ validate_size (Uint uint_size, tree gnu_type, Entity_Id gnat_object,
by the smallest integral mode that's valid for pointers. */ by the smallest integral mode that's valid for pointers. */
if (TREE_CODE (gnu_type) == POINTER_TYPE || TYPE_IS_FAT_POINTER_P (gnu_type)) if (TREE_CODE (gnu_type) == POINTER_TYPE || TYPE_IS_FAT_POINTER_P (gnu_type))
{ {
machine_mode p_mode = GET_CLASS_NARROWEST_MODE (MODE_INT); scalar_int_mode p_mode = NARROWEST_INT_MODE;
while (!targetm.valid_pointer_mode (p_mode)) while (!targetm.valid_pointer_mode (p_mode))
p_mode = GET_MODE_WIDER_MODE (p_mode).require (); p_mode = GET_MODE_WIDER_MODE (p_mode).require ();
type_size = bitsize_int (GET_MODE_BITSIZE (p_mode)); type_size = bitsize_int (GET_MODE_BITSIZE (p_mode));
......
...@@ -707,7 +707,7 @@ alignment_for_piecewise_move (unsigned int max_pieces, unsigned int align) ...@@ -707,7 +707,7 @@ alignment_for_piecewise_move (unsigned int max_pieces, unsigned int align)
{ {
machine_mode tmode, xmode; machine_mode tmode, xmode;
xmode = GET_CLASS_NARROWEST_MODE (MODE_INT); xmode = NARROWEST_INT_MODE;
FOR_EACH_MODE_IN_CLASS (tmode, MODE_INT) FOR_EACH_MODE_IN_CLASS (tmode, MODE_INT)
{ {
if (GET_MODE_SIZE (tmode) > max_pieces if (GET_MODE_SIZE (tmode) > max_pieces
...@@ -3910,7 +3910,7 @@ push_block (rtx size, int extra, int below) ...@@ -3910,7 +3910,7 @@ push_block (rtx size, int extra, int below)
negate_rtx (Pmode, size)); negate_rtx (Pmode, size));
} }
return memory_address (GET_CLASS_NARROWEST_MODE (MODE_INT), temp); return memory_address (NARROWEST_INT_MODE, temp);
} }
/* A utility routine that returns the base of an auto-inc memory, or NULL. */ /* A utility routine that returns the base of an auto-inc memory, or NULL. */
......
...@@ -655,6 +655,12 @@ extern const unsigned char class_narrowest_mode[MAX_MODE_CLASS]; ...@@ -655,6 +655,12 @@ extern const unsigned char class_narrowest_mode[MAX_MODE_CLASS];
#define GET_CLASS_NARROWEST_MODE(CLASS) \ #define GET_CLASS_NARROWEST_MODE(CLASS) \
((machine_mode) class_narrowest_mode[CLASS]) ((machine_mode) class_narrowest_mode[CLASS])
/* The narrowest full integer mode available on the target. */
#define NARROWEST_INT_MODE \
(scalar_int_mode \
(scalar_int_mode::from_int (class_narrowest_mode[MODE_INT])))
/* Return the narrowest mode in T's class. */ /* Return the narrowest mode in T's class. */
template<typename T> template<typename T>
......
...@@ -2723,7 +2723,7 @@ bit_field_mode_iterator ...@@ -2723,7 +2723,7 @@ bit_field_mode_iterator
HOST_WIDE_INT bitregion_start, HOST_WIDE_INT bitregion_start,
HOST_WIDE_INT bitregion_end, HOST_WIDE_INT bitregion_end,
unsigned int align, bool volatilep) unsigned int align, bool volatilep)
: m_mode (GET_CLASS_NARROWEST_MODE (MODE_INT)), m_bitsize (bitsize), : m_mode (NARROWEST_INT_MODE), m_bitsize (bitsize),
m_bitpos (bitpos), m_bitregion_start (bitregion_start), m_bitpos (bitpos), m_bitregion_start (bitregion_start),
m_bitregion_end (bitregion_end), m_align (align), m_bitregion_end (bitregion_end), m_align (align),
m_volatilep (volatilep), m_count (0) m_volatilep (volatilep), m_count (0)
......
...@@ -10120,7 +10120,7 @@ simplify_float_conversion_using_ranges (gimple_stmt_iterator *gsi, ...@@ -10120,7 +10120,7 @@ simplify_float_conversion_using_ranges (gimple_stmt_iterator *gsi,
integer mode available. */ integer mode available. */
else else
{ {
mode = GET_CLASS_NARROWEST_MODE (MODE_INT); mode = NARROWEST_INT_MODE;
for (;;) for (;;)
{ {
/* If we cannot do a signed conversion to float from mode /* If we cannot do a signed conversion to float from mode
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment