@@ -1486,9 +1486,7 @@ rtx_equal_for_memref_p (const_rtx x, con
return XSTR (x, 0) == XSTR (y, 0);
case VALUE:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
+ CASE_CONST_UNIQUE:
/* There's no need to compare the contents of CONST_DOUBLEs or
CONST_INTs because pointer equality is a good enough
comparison for these nodes. */
@@ -531,12 +531,10 @@ find_single_use_1 (rtx dest, rtx *loc)
switch (code)
{
- case CONST_INT:
case CONST:
case LABEL_REF:
case SYMBOL_REF:
- case CONST_DOUBLE:
- case CONST_VECTOR:
+ CASE_CONST_INTEGER_OR_FLOAT:
case CLOBBER:
return 0;
@@ -12788,10 +12786,8 @@ mark_used_regs_combine (rtx x)
{
case LABEL_REF:
case SYMBOL_REF:
- case CONST_INT:
case CONST:
- case CONST_DOUBLE:
- case CONST_VECTOR:
+ CASE_CONST_INTEGER_OR_FLOAT:
case PC:
case ADDR_VEC:
case ADDR_DIFF_VEC:
@@ -2623,9 +2623,7 @@ exp_equiv_p (const_rtx x, const_rtx y, i
{
case PC:
case CC0:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
+ CASE_CONST_UNIQUE:
return x == y;
case LABEL_REF:
@@ -2829,10 +2827,7 @@ canon_reg (rtx x, rtx insn)
case PC:
case CC0:
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case LABEL_REF:
case ADDR_VEC:
@@ -3133,10 +3128,7 @@ fold_rtx (rtx x, rtx insn)
return x;
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case LABEL_REF:
case REG:
@@ -3198,12 +3190,9 @@ fold_rtx (rtx x, rtx insn)
break;
case CONST:
- case CONST_INT:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case LABEL_REF:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
const_arg = folded_arg;
break;
@@ -6063,13 +6052,10 @@ cse_process_notes_1 (rtx x, rtx object,
switch (code)
{
- case CONST_INT:
case CONST:
case SYMBOL_REF:
case LABEL_REF:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case PC:
case CC0:
case LO_SUM:
@@ -6671,10 +6657,7 @@ count_reg_usage (rtx x, int *counts, rtx
case PC:
case CC0:
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case LABEL_REF:
return;
@@ -1603,9 +1603,7 @@ cselib_expand_value_rtx_1 (rtx orig, str
}
}
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case CODE_LABEL:
case PC:
@@ -1856,10 +1854,7 @@ cselib_subst_to_values (rtx x, enum mach
break;
return e->val_rtx;
- case CONST_DOUBLE:
- case CONST_VECTOR:
- case CONST_INT:
- case CONST_FIXED:
+ CASE_ALL_NUMERIC_CONST:
return x;
case PRE_DEC:
@@ -3107,11 +3107,8 @@ df_uses_record (struct df_collection_rec
{
case LABEL_REF:
case SYMBOL_REF:
- case CONST_INT:
case CONST:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case PC:
case CC0:
case ADDR_VEC:
@@ -1112,9 +1112,7 @@ const_or_frame_p (rtx x)
switch (GET_CODE (x))
{
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case LABEL_REF:
return true;
@@ -2504,10 +2504,7 @@ verify_rtx_sharing (rtx orig, rtx insn)
case REG:
case DEBUG_EXPR:
case VALUE:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case LABEL_REF:
case CODE_LABEL:
@@ -2721,10 +2718,7 @@ repeat:
case REG:
case DEBUG_EXPR:
case VALUE:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case LABEL_REF:
case CODE_LABEL:
@@ -2843,10 +2837,7 @@ repeat:
case REG:
case DEBUG_EXPR:
case VALUE:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case CODE_LABEL:
case PC:
@@ -5236,10 +5227,7 @@ copy_insn_1 (rtx orig)
{
case REG:
case DEBUG_EXPR:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case CODE_LABEL:
case PC:
@@ -347,8 +347,7 @@ convert_memory_address_addr_space (enum
to the default case. */
switch (GET_CODE (x))
{
- case CONST_INT:
- case CONST_DOUBLE:
+ CASE_SCALAR_CONST_INTEGER:
if (GET_MODE_SIZE (to_mode) < GET_MODE_SIZE (from_mode))
code = TRUNCATE;
else if (POINTERS_EXTEND_UNSIGNED < 0)
@@ -742,10 +742,7 @@ want_to_gcse_p (rtx x, int *max_distance
case CALL:
return 0;
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
if (!doing_code_hoisting_p)
/* Do not PRE constants. */
return 0;
@@ -887,10 +884,7 @@ oprs_unchanged_p (const_rtx x, const_rtx
case PC:
case CC0: /*FIXME*/
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case LABEL_REF:
case ADDR_VEC:
@@ -1693,10 +1687,7 @@ compute_transp (const_rtx x, int indx, s
case PC:
case CC0: /*FIXME*/
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case LABEL_REF:
case ADDR_VEC:
@@ -674,9 +674,7 @@ attr_copy_rtx (rtx orig)
switch (code)
{
case REG:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_VECTOR:
+ CASE_CONST_INTEGER_OR_FLOAT:
case SYMBOL_REF:
case MATCH_TEST:
case CODE_LABEL:
@@ -3090,9 +3088,7 @@ clear_struct_flag (rtx x)
switch (code)
{
case REG:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_VECTOR:
+ CASE_CONST_INTEGER_OR_FLOAT:
case MATCH_TEST:
case SYMBOL_REF:
case CODE_LABEL:
@@ -2445,10 +2445,7 @@ equiv_init_varies_p (rtx x)
return !MEM_READONLY_P (x) || equiv_init_varies_p (XEXP (x, 0));
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case LABEL_REF:
return 0;
@@ -2560,13 +2557,10 @@ contains_replace_regs (rtx x)
switch (code)
{
- case CONST_INT:
case CONST:
case LABEL_REF:
case SYMBOL_REF:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case PC:
case CC0:
case HIGH:
@@ -2608,13 +2602,10 @@ memref_referenced_p (rtx memref, rtx x)
switch (code)
{
- case CONST_INT:
case CONST:
case LABEL_REF:
case SYMBOL_REF:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case PC:
case CC0:
case HIGH:
@@ -3566,10 +3557,7 @@ rtx_moveable_p (rtx *loc, enum op_type t
switch (code)
{
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case LABEL_REF:
return true;
@@ -1078,8 +1078,7 @@ mark_jump_label_1 (rtx x, rtx insn, bool
case PC:
case CC0:
case REG:
- case CONST_INT:
- case CONST_DOUBLE:
+ CASE_CONST_LEAF:
case CLOBBER:
case CALL:
return;
@@ -1753,8 +1752,7 @@ rtx_renumbered_equal_p (const_rtx x, con
case CC0:
case ADDR_VEC:
case ADDR_DIFF_VEC:
- case CONST_INT:
- case CONST_DOUBLE:
+ CASE_CONST_UNIQUE:
return 0;
case LABEL_REF:
@@ -203,9 +203,7 @@ check_maybe_invariant (rtx x)
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
+ CASE_ALL_SCALAR_NUMERIC_CONST:
case SYMBOL_REF:
case CONST:
case LABEL_REF:
@@ -302,9 +300,7 @@ hash_invariant_expr_1 (rtx insn, rtx x)
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case CONST:
case LABEL_REF:
@@ -363,9 +359,7 @@ invariant_expr_equal_p (rtx insn1, rtx e
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case CONST:
case LABEL_REF:
@@ -519,10 +519,7 @@ oprs_unchanged_p (rtx x, rtx insn, bool
case PC:
case CC0: /*FIXME*/
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case LABEL_REF:
case ADDR_VEC:
@@ -1022,10 +1022,7 @@ reg_scan_mark_refs (rtx x, rtx insn)
switch (code)
{
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case CC0:
case PC:
case SYMBOL_REF:
@@ -1342,10 +1342,7 @@ scan_rtx (rtx insn, rtx *loc, enum reg_c
switch (code)
{
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case LABEL_REF:
case CC0:
@@ -2566,10 +2566,7 @@ eliminate_regs_1 (rtx x, enum machine_mo
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case CONST:
case SYMBOL_REF:
case CODE_LABEL:
@@ -2983,10 +2980,7 @@ elimination_effects (rtx x, enum machine
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case CONST:
case SYMBOL_REF:
case CODE_LABEL:
@@ -4454,13 +4448,10 @@ scan_paradoxical_subregs (rtx x)
switch (code)
{
case REG:
- case CONST_INT:
case CONST:
case SYMBOL_REF:
case LABEL_REF:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR: /* shouldn't happen, but just in case. */
+ CASE_ALL_NUMERIC_CONST:
case CC0:
case PC:
case USE:
@@ -2318,9 +2318,7 @@ operands_match_p (rtx x, rtx y)
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
+ CASE_CONST_UNIQUE:
return 0;
case LABEL_REF:
@@ -5341,11 +5339,8 @@ subst_reg_equivs (rtx ad, rtx insn)
switch (code)
{
case HIGH:
- case CONST_INT:
case CONST:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case LABEL_REF:
case PC:
@@ -215,10 +215,7 @@ mark_referenced_resources (rtx x, struct
switch (code)
{
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case PC:
case SYMBOL_REF:
case LABEL_REF:
@@ -632,10 +629,7 @@ mark_set_resources (rtx x, struct resour
case BARRIER:
case CODE_LABEL:
case USE:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case LABEL_REF:
case SYMBOL_REF:
case CONST:
@@ -97,10 +97,7 @@ rtx_unstable_p (const_rtx x)
return !MEM_READONLY_P (x) || rtx_unstable_p (XEXP (x, 0));
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case LABEL_REF:
return 0;
@@ -170,10 +167,7 @@ rtx_varies_p (const_rtx x, bool for_alia
return !MEM_READONLY_P (x) || rtx_varies_p (XEXP (x, 0), for_alias);
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case LABEL_REF:
return 0;
@@ -585,10 +579,7 @@ count_occurrences (const_rtx x, const_rt
switch (code)
{
case REG:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case CODE_LABEL:
case PC:
@@ -690,10 +681,7 @@ reg_mentioned_p (const_rtx reg, const_rt
case PC:
return 0;
- case CONST_INT:
- case CONST_VECTOR:
- case CONST_DOUBLE:
- case CONST_FIXED:
+ CASE_ALL_NUMERIC_CONST:
/* These are kept unique for a given value. */
return 0;
@@ -887,10 +875,7 @@ modified_between_p (const_rtx x, const_r
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case CONST:
case SYMBOL_REF:
case LABEL_REF:
@@ -946,10 +931,7 @@ modified_in_p (const_rtx x, const_rtx in
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case CONST:
case SYMBOL_REF:
case LABEL_REF:
@@ -2095,11 +2077,8 @@ volatile_insn_p (const_rtx x)
{
case LABEL_REF:
case SYMBOL_REF:
- case CONST_INT:
case CONST:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case CC0:
case PC:
case REG:
@@ -2160,11 +2139,8 @@ volatile_refs_p (const_rtx x)
{
case LABEL_REF:
case SYMBOL_REF:
- case CONST_INT:
case CONST:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case CC0:
case PC:
case REG:
@@ -2223,11 +2199,8 @@ side_effects_p (const_rtx x)
{
case LABEL_REF:
case SYMBOL_REF:
- case CONST_INT:
case CONST:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case CC0:
case PC:
case REG:
@@ -2312,10 +2285,7 @@ may_trap_p_1 (const_rtx x, unsigned flag
switch (code)
{
/* Handle these cases quickly. */
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case LABEL_REF:
case CONST:
@@ -2514,10 +2484,7 @@ inequality_comparisons_p (const_rtx x)
case SCRATCH:
case PC:
case CC0:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case CONST:
case LABEL_REF:
case SYMBOL_REF:
@@ -2760,10 +2727,7 @@ computed_jump_p_1 (const_rtx x)
return 0;
case CONST:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case REG:
return 1;
@@ -248,10 +248,7 @@ copy_rtx (rtx orig)
case REG:
case DEBUG_EXPR:
case VALUE:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case CODE_LABEL:
case PC:
@@ -400,9 +397,7 @@ rtx_equal_p_cb (const_rtx x, const_rtx y
case DEBUG_EXPR:
case VALUE:
case SCRATCH:
- case CONST_DOUBLE:
- case CONST_INT:
- case CONST_FIXED:
+ CASE_CONST_UNIQUE:
return 0;
case DEBUG_IMPLICIT_PTR:
@@ -539,9 +534,7 @@ rtx_equal_p (const_rtx x, const_rtx y)
case DEBUG_EXPR:
case VALUE:
case SCRATCH:
- case CONST_DOUBLE:
- case CONST_INT:
- case CONST_FIXED:
+ CASE_CONST_UNIQUE:
return 0;
case DEBUG_IMPLICIT_PTR:
@@ -403,6 +403,59 @@ struct GTY((variable_size)) rtvec_def {
/* Predicate yielding nonzero iff X is an rtx for a memory location. */
#define MEM_P(X) (GET_CODE (X) == MEM)
+/* Match CONST_*s that can represent compile-time scalar constant
+ integers. */
+#define CASE_SCALAR_CONST_INTEGER \
+ case CONST_INT: \
+ case CONST_DOUBLE
+
+/* Match CONST_*s that can represent compile-time scalar or vector
+ constant integers. */
+#define CASE_CONST_INTEGER \
+ case CONST_INT: \
+ case CONST_DOUBLE: \
+ case CONST_VECTOR
+
+/* Match CONST_*s that can represent compile-time scalar constant
+ integers or floats. */
+#define CASE_SCALAR_CONST_INTEGER_OR_FLOAT \
+ case CONST_INT: \
+ case CONST_DOUBLE
+
+/* Match CONST_*s that can represent compile-time constant integers or
+ floats. */
+#define CASE_CONST_INTEGER_OR_FLOAT \
+ case CONST_INT: \
+ case CONST_DOUBLE: \
+ case CONST_VECTOR
+
+/* Match all CONST_* scalar rtxes. */
+#define CASE_ALL_SCALAR_NUMERIC_CONST \
+ case CONST_INT: \
+ case CONST_DOUBLE: \
+ case CONST_FIXED
+
+/* Match all CONST_* rtxes. */
+#define CASE_ALL_NUMERIC_CONST \
+ case CONST_INT: \
+ case CONST_DOUBLE: \
+ case CONST_FIXED: \
+ case CONST_VECTOR
+
+/* Match CONST_*s for which pointer equality corresponds to value
+ equality. */
+#define CASE_CONST_UNIQUE \
+ case CONST_INT: \
+ case CONST_DOUBLE: \
+ case CONST_FIXED
+
+/* Match CONST_*s that have no internal rtxs so therefore pointer
+ equality corresponds to value equality. */
+#define CASE_CONST_LEAF \
+ case CONST_INT: \
+ case CONST_DOUBLE: \
+ case CONST_FIXED
+
/* Predicate yielding nonzero iff X is an rtx for a constant integer. */
#define CONST_INT_P(X) (GET_CODE (X) == CONST_INT)
@@ -2547,10 +2547,7 @@ sched_analyze_2 (struct deps_desc *deps,
switch (code)
{
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case CONST:
case LABEL_REF:
@@ -44,10 +44,7 @@ cleanup_auto_inc_dec (rtx src, enum mach
switch (code)
{
case REG:
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_FIXED:
- case CONST_VECTOR:
+ CASE_ALL_NUMERIC_CONST:
case SYMBOL_REF:
case CODE_LABEL:
case PC: