summaryrefslogtreecommitdiff
path: root/gcc/integrate.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/integrate.c')
-rw-r--r--gcc/integrate.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/gcc/integrate.c b/gcc/integrate.c
index 135bd1d38b8..22a7c4021ce 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -389,18 +389,19 @@ allocate_initial_values (rtx *reg_equiv_memory_loc ATTRIBUTE_UNUSED)
int regno = REGNO (ivs->entries[i].pseudo);
rtx x = ALLOCATE_INITIAL_VALUE (ivs->entries[i].hard_reg);
- if (x == NULL_RTX || REG_N_SETS (REGNO (ivs->entries[i].pseudo)) > 1)
- ; /* Do nothing. */
- else if (MEM_P (x))
- reg_equiv_memory_loc[regno] = x;
- else if (REG_P (x))
+ if (x && REG_N_SETS (REGNO (ivs->entries[i].pseudo)) <= 1)
{
- reg_renumber[regno] = REGNO (x);
- /* Poke the regno right into regno_reg_rtx
- so that even fixed regs are accepted. */
- REGNO (ivs->entries[i].pseudo) = REGNO (x);
+ if (MEM_P (x))
+ reg_equiv_memory_loc[regno] = x;
+ else
+ {
+ gcc_assert (REG_P (x));
+ reg_renumber[regno] = REGNO (x);
+ /* Poke the regno right into regno_reg_rtx so that even
+ fixed regs are accepted. */
+ REGNO (ivs->entries[i].pseudo) = REGNO (x);
+ }
}
- else abort ();
}
#endif
}