aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/mips/mips.c36
2 files changed, 22 insertions, 19 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 350b9ba..3d7faf5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
+ * config/mips/mips.c (dump_constants_1): Generalize to include
+ fractional and accumulator modes.
+
+2007-09-23 Richard Sandiford <rsandifo@nildram.co.uk>
+
* config/mips/mips.h (ISA_HAS_DSP, ISA_HAS_DSPR2): New macros.
* config/mips/mips.c (mips_set_mips16_mode): Don't clear the DSP
flags for MIPS16.
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 1d72056..5e939d1 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -10218,30 +10218,28 @@ add_constant (struct mips16_constant_pool *pool,
static rtx
dump_constants_1 (enum machine_mode mode, rtx value, rtx insn)
{
- switch (GET_MODE_CLASS (mode))
+ if (SCALAR_INT_MODE_P (mode)
+ || ALL_SCALAR_FRACT_MODE_P (mode)
+ || ALL_SCALAR_ACCUM_MODE_P (mode))
{
- case MODE_INT:
- {
- rtx size = GEN_INT (GET_MODE_SIZE (mode));
- return emit_insn_after (gen_consttable_int (value, size), insn);
- }
+ rtx size = GEN_INT (GET_MODE_SIZE (mode));
+ return emit_insn_after (gen_consttable_int (value, size), insn);
+ }
- case MODE_FLOAT:
- return emit_insn_after (gen_consttable_float (value), insn);
+ if (SCALAR_FLOAT_MODE_P (mode))
+ return emit_insn_after (gen_consttable_float (value), insn);
- case MODE_VECTOR_FLOAT:
- case MODE_VECTOR_INT:
- {
- int i;
- for (i = 0; i < CONST_VECTOR_NUNITS (value); i++)
- insn = dump_constants_1 (GET_MODE_INNER (mode),
- CONST_VECTOR_ELT (value, i), insn);
- return insn;
- }
+ if (VECTOR_MODE_P (mode))
+ {
+ int i;
- default:
- gcc_unreachable ();
+ for (i = 0; i < CONST_VECTOR_NUNITS (value); i++)
+ insn = dump_constants_1 (GET_MODE_INNER (mode),
+ CONST_VECTOR_ELT (value, i), insn);
+ return insn;
}
+
+ gcc_unreachable ();
}