===================================================================
@@ -1121,11 +1121,8 @@ cselib_hash_rtx (rtx x, int create, enum
return hash ? hash : (unsigned int) CONST_INT;
case CONST_WIDE_INT:
- {
- int i;
- for (i = 0; i < CONST_WIDE_INT_NUNITS (x); i++)
- hash += CONST_WIDE_INT_ELT (x, i);
- }
+ for (i = 0; i < CONST_WIDE_INT_NUNITS (x); i++)
+ hash += CONST_WIDE_INT_ELT (x, i);
return hash;
case CONST_DOUBLE:
===================================================================
@@ -2337,11 +2337,8 @@ hash_rtx_cb (const_rtx x, enum machine_m
return hash;
case CONST_WIDE_INT:
- {
- int i;
- for (i = 0; i < CONST_WIDE_INT_NUNITS (x); i++)
- hash += CONST_WIDE_INT_ELT (x, i);
- }
+ for (i = 0; i < CONST_WIDE_INT_NUNITS (x); i++)
+ hash += CONST_WIDE_INT_ELT (x, i);
return hash;
case CONST_DOUBLE:
===================================================================
@@ -348,7 +348,10 @@ struct GTY((chain_next ("RTX_NEXT (&%h)"
unsigned return_val : 1;
union {
- /* RTXs are free to use up to 32 bit from here. */
+ /* The final union field is aligned to 64 bits on LP64 hosts,
+ giving a 32-bit gap after the fields above. We optimize the
+ layout for that case and use the gap for extra code-specific
+ information. */
/* In a CONST_WIDE_INT (aka hwivec_def), this is the number of
HOST_WIDE_INTs in the hwivec_def. */
===================================================================
@@ -619,8 +619,7 @@ print_rtx (const_rtx in_rtx)
break;
case CONST_WIDE_INT:
- if (! flag_simple)
- fprintf (outfile, " ");
+ fprintf (outfile, " ");
cwi_output_hex (outfile, in_rtx);
break;
#endif
===================================================================
@@ -727,12 +727,11 @@ convert_modes (enum machine_mode mode, e
if (mode == oldmode)
return x;
- if (CONST_SCALAR_INT_P (x)
- && GET_MODE_CLASS (mode) == MODE_INT)
+ if (CONST_SCALAR_INT_P (x) && GET_MODE_CLASS (mode) == MODE_INT)
{
- /* If the caller did not tell us the old mode, then there is
- not much to do with respect to canonization. We have to assume
- that all the bits are significant. */
+ /* If the caller did not tell us the old mode, then there is not
+ much to do with respect to canonicalization. We have to
+ assume that all the bits are significant. */
if (GET_MODE_CLASS (oldmode) != MODE_INT)
oldmode = MAX_MODE_INT;
wide_int w = wide_int::from (std::make_pair (x, oldmode),
@@ -5295,10 +5294,10 @@ store_expr (tree exp, rtx target, int ca
&alt_rtl);
}
- /* If TEMP is a VOIDmode constant and the mode of the type of EXP is
- not the same as that of TARGET, adjust the constant. This is
- needed, for example, in case it is a CONST_DOUBLE or
- CONST_WIDE_INT and we want only a word-sized value. */
+ /* If TEMP is a VOIDmode constant and the mode of the type of EXP is not
+ the same as that of TARGET, adjust the constant. This is needed, for
+ example, in case it is a CONST_DOUBLE or CONST_WIDE_INT and we want
+ only a word-sized value. */
if (CONSTANT_P (temp) && GET_MODE (temp) == VOIDmode
&& TREE_CODE (exp) != ERROR_MARK
&& GET_MODE (target) != TYPE_MODE (TREE_TYPE (exp)))
@@ -9477,19 +9476,18 @@ expand_expr_real_1 (tree exp, rtx target
return decl_rtl;
case INTEGER_CST:
- {
- tree type = TREE_TYPE (exp);
- /* One could argue that GET_MODE_PRECISION (TYPE_MODE (type))
- should always be the same as TYPE_PRECISION (type).
- However, it is not. Since we are converting from tree to
- rtl, we have to expose this ugly truth here. */
- temp = immed_wide_int_const (wide_int::from
- (exp,
- GET_MODE_PRECISION (TYPE_MODE (type)),
- TYPE_SIGN (type)),
- TYPE_MODE (type));
- return temp;
- }
+ /* "Given that TYPE_PRECISION (type) is not always equal to
+ GET_MODE_PRECISION (TYPE_MODE (type)), we need to extend from
+ the former to the latter according to the signedness of the
+ type". */
+
+ temp = immed_wide_int_const (wide_int::from
+ (exp,
+ GET_MODE_PRECISION (TYPE_MODE (type)),
+ TYPE_SIGN (type)),
+ TYPE_MODE (type));
+ return temp;
+
case VECTOR_CST:
{
tree tmp = NULL_TREE;
@@ -11149,8 +11147,7 @@ const_vector_from_tree (tree exp)
RTVEC_ELT (v, i) = CONST_FIXED_FROM_FIXED_VALUE (TREE_FIXED_CST (elt),
inner);
else
- RTVEC_ELT (v, i)
- = immed_wide_int_const (elt, TYPE_MODE (TREE_TYPE (elt)));
+ RTVEC_ELT (v, i) = immed_wide_int_const (elt, inner);
}
return gen_rtx_CONST_VECTOR (mode, v);