emit-rtl.c (init_emit): Add hard registers to regno_reg_rtx.
* emit-rtl.c (init_emit): Add hard registers to regno_reg_rtx. * combine.c (move_deaths): Use regno_reg_rtx for hard regs rather than creating a new register. (distribute_notes): Likewise. * df.c (df_reg_use_gen): Likewise. (df_reg_clobber_gen): Likewise. (df_ref_record): Likewise. * expr.c (use_regs): Likewise. * flow.c (propagate_one_insn): Likewise. (mark_set_1): Likewise. (mark_used_reg): Likewise. * reload.c (emit_reload_insns): Likewise. From-SVN: r54358
This commit is contained in:
parent
bc9c18c319
commit
e50126e858
|
@ -1,3 +1,18 @@
|
||||||
|
2002-06-07 Jeff Law <law@redhat.com
|
||||||
|
|
||||||
|
* emit-rtl.c (init_emit): Add hard registers to regno_reg_rtx.
|
||||||
|
* combine.c (move_deaths): Use regno_reg_rtx for hard regs rather
|
||||||
|
than creating a new register.
|
||||||
|
(distribute_notes): Likewise.
|
||||||
|
* df.c (df_reg_use_gen): Likewise.
|
||||||
|
(df_reg_clobber_gen): Likewise.
|
||||||
|
(df_ref_record): Likewise.
|
||||||
|
* expr.c (use_regs): Likewise.
|
||||||
|
* flow.c (propagate_one_insn): Likewise.
|
||||||
|
(mark_set_1): Likewise.
|
||||||
|
(mark_used_reg): Likewise.
|
||||||
|
* reload.c (emit_reload_insns): Likewise.
|
||||||
|
|
||||||
2002-06-07 Roger Sayle <roger@eyesopen.com>
|
2002-06-07 Roger Sayle <roger@eyesopen.com>
|
||||||
|
|
||||||
* simplify-rtx.c (simplify_gen_relational): Simplify RTL of the form
|
* simplify-rtx.c (simplify_gen_relational): Simplify RTL of the form
|
||||||
|
|
|
@ -11944,7 +11944,7 @@ move_deaths (x, maybe_kill_insn, from_cuid, to_insn, pnotes)
|
||||||
if (i < regno || i >= ourend)
|
if (i < regno || i >= ourend)
|
||||||
REG_NOTES (where_dead)
|
REG_NOTES (where_dead)
|
||||||
= gen_rtx_EXPR_LIST (REG_DEAD,
|
= gen_rtx_EXPR_LIST (REG_DEAD,
|
||||||
gen_rtx_REG (reg_raw_mode[i], i),
|
regno_reg_rtx[i],
|
||||||
REG_NOTES (where_dead));
|
REG_NOTES (where_dead));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11971,7 +11971,7 @@ move_deaths (x, maybe_kill_insn, from_cuid, to_insn, pnotes)
|
||||||
offset = 1;
|
offset = 1;
|
||||||
|
|
||||||
for (i = regno + offset; i < ourend; i++)
|
for (i = regno + offset; i < ourend; i++)
|
||||||
move_deaths (gen_rtx_REG (reg_raw_mode[i], i),
|
move_deaths (regno_reg_rtx[i],
|
||||||
maybe_kill_insn, from_cuid, to_insn, &oldnotes);
|
maybe_kill_insn, from_cuid, to_insn, &oldnotes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12593,7 +12593,7 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
|
||||||
for (i = regno; i < endregno;
|
for (i = regno; i < endregno;
|
||||||
i += HARD_REGNO_NREGS (i, reg_raw_mode[i]))
|
i += HARD_REGNO_NREGS (i, reg_raw_mode[i]))
|
||||||
{
|
{
|
||||||
rtx piece = gen_rtx_REG (reg_raw_mode[i], i);
|
rtx piece = regno_reg_rtx[i];
|
||||||
basic_block bb = this_basic_block;
|
basic_block bb = this_basic_block;
|
||||||
|
|
||||||
if (! dead_or_set_p (place, piece)
|
if (! dead_or_set_p (place, piece)
|
||||||
|
|
8
gcc/df.c
8
gcc/df.c
|
@ -625,8 +625,7 @@ static rtx df_reg_use_gen (regno)
|
||||||
rtx reg;
|
rtx reg;
|
||||||
rtx use;
|
rtx use;
|
||||||
|
|
||||||
reg = regno >= FIRST_PSEUDO_REGISTER
|
reg = regno_reg_rtx[regno];
|
||||||
? regno_reg_rtx[regno] : gen_rtx_REG (reg_raw_mode[regno], regno);
|
|
||||||
|
|
||||||
use = gen_rtx_USE (GET_MODE (reg), reg);
|
use = gen_rtx_USE (GET_MODE (reg), reg);
|
||||||
return use;
|
return use;
|
||||||
|
@ -640,8 +639,7 @@ static rtx df_reg_clobber_gen (regno)
|
||||||
rtx reg;
|
rtx reg;
|
||||||
rtx use;
|
rtx use;
|
||||||
|
|
||||||
reg = regno >= FIRST_PSEUDO_REGISTER
|
reg = regno_reg_rtx[regno];
|
||||||
? regno_reg_rtx[regno] : gen_rtx_REG (reg_raw_mode[regno], regno);
|
|
||||||
|
|
||||||
use = gen_rtx_CLOBBER (GET_MODE (reg), reg);
|
use = gen_rtx_CLOBBER (GET_MODE (reg), reg);
|
||||||
return use;
|
return use;
|
||||||
|
@ -897,7 +895,7 @@ df_ref_record (df, reg, loc, insn, ref_type, ref_flags)
|
||||||
endregno = regno + HARD_REGNO_NREGS (regno, GET_MODE (reg));
|
endregno = regno + HARD_REGNO_NREGS (regno, GET_MODE (reg));
|
||||||
|
|
||||||
for (i = regno; i < endregno; i++)
|
for (i = regno; i < endregno; i++)
|
||||||
df_ref_record_1 (df, gen_rtx_REG (reg_raw_mode[i], i),
|
df_ref_record_1 (df, regno_reg_rtx[i],
|
||||||
loc, insn, ref_type, ref_flags);
|
loc, insn, ref_type, ref_flags);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -4913,6 +4913,7 @@ void
|
||||||
init_emit ()
|
init_emit ()
|
||||||
{
|
{
|
||||||
struct function *f = cfun;
|
struct function *f = cfun;
|
||||||
|
int i;
|
||||||
|
|
||||||
f->emit = (struct emit_status *) ggc_alloc (sizeof (struct emit_status));
|
f->emit = (struct emit_status *) ggc_alloc (sizeof (struct emit_status));
|
||||||
first_insn = NULL;
|
first_insn = NULL;
|
||||||
|
@ -4942,9 +4943,14 @@ init_emit ()
|
||||||
= (tree *) ggc_alloc_cleared (f->emit->regno_pointer_align_length
|
= (tree *) ggc_alloc_cleared (f->emit->regno_pointer_align_length
|
||||||
* sizeof (tree));
|
* sizeof (tree));
|
||||||
|
|
||||||
|
/* Put copies of all the hard registers into regno_reg_rtx. */
|
||||||
|
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
||||||
|
regno_reg_rtx[i] = gen_raw_REG (reg_raw_mode[i], i);
|
||||||
|
|
||||||
/* Put copies of all the virtual register rtx into regno_reg_rtx. */
|
/* Put copies of all the virtual register rtx into regno_reg_rtx. */
|
||||||
init_virtual_regs (f->emit);
|
init_virtual_regs (f->emit);
|
||||||
|
|
||||||
|
|
||||||
/* Indicate that the virtual registers and stack locations are
|
/* Indicate that the virtual registers and stack locations are
|
||||||
all pointers. */
|
all pointers. */
|
||||||
REG_POINTER (stack_pointer_rtx) = 1;
|
REG_POINTER (stack_pointer_rtx) = 1;
|
||||||
|
|
|
@ -2293,7 +2293,7 @@ use_regs (call_fusage, regno, nregs)
|
||||||
abort ();
|
abort ();
|
||||||
|
|
||||||
for (i = 0; i < nregs; i++)
|
for (i = 0; i < nregs; i++)
|
||||||
use_reg (call_fusage, gen_rtx_REG (reg_raw_mode[regno + i], regno + i));
|
use_reg (call_fusage, regno_reg_rtx[regno + i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add USE expressions to *CALL_FUSAGE for each REG contained in the
|
/* Add USE expressions to *CALL_FUSAGE for each REG contained in the
|
||||||
|
|
10
gcc/flow.c
10
gcc/flow.c
|
@ -1767,8 +1767,7 @@ propagate_one_insn (pbi, insn)
|
||||||
if (TEST_HARD_REG_BIT (regs_invalidated_by_call, i))
|
if (TEST_HARD_REG_BIT (regs_invalidated_by_call, i))
|
||||||
{
|
{
|
||||||
/* We do not want REG_UNUSED notes for these registers. */
|
/* We do not want REG_UNUSED notes for these registers. */
|
||||||
mark_set_1 (pbi, CLOBBER, gen_rtx_REG (reg_raw_mode[i], i),
|
mark_set_1 (pbi, CLOBBER, regno_reg_rtx[i], cond, insn,
|
||||||
cond, insn,
|
|
||||||
pbi->flags & ~(PROP_DEATH_NOTES | PROP_REG_INFO));
|
pbi->flags & ~(PROP_DEATH_NOTES | PROP_REG_INFO));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1816,8 +1815,7 @@ propagate_one_insn (pbi, insn)
|
||||||
so they are made live. */
|
so they are made live. */
|
||||||
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
||||||
if (global_regs[i])
|
if (global_regs[i])
|
||||||
mark_used_reg (pbi, gen_rtx_REG (reg_raw_mode[i], i),
|
mark_used_reg (pbi, regno_reg_rtx[i], cond, insn);
|
||||||
cond, insn);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2817,7 +2815,7 @@ mark_set_1 (pbi, code, reg, cond, insn, flags)
|
||||||
if (! REGNO_REG_SET_P (pbi->reg_live, i))
|
if (! REGNO_REG_SET_P (pbi->reg_live, i))
|
||||||
REG_NOTES (insn)
|
REG_NOTES (insn)
|
||||||
= alloc_EXPR_LIST (REG_UNUSED,
|
= alloc_EXPR_LIST (REG_UNUSED,
|
||||||
gen_rtx_REG (reg_raw_mode[i], i),
|
regno_reg_rtx[i],
|
||||||
REG_NOTES (insn));
|
REG_NOTES (insn));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3625,7 +3623,7 @@ mark_used_reg (pbi, reg, cond, insn)
|
||||||
&& ! dead_or_set_regno_p (insn, i))
|
&& ! dead_or_set_regno_p (insn, i))
|
||||||
REG_NOTES (insn)
|
REG_NOTES (insn)
|
||||||
= alloc_EXPR_LIST (REG_DEAD,
|
= alloc_EXPR_LIST (REG_DEAD,
|
||||||
gen_rtx_REG (reg_raw_mode[i], i),
|
regno_reg_rtx[i],
|
||||||
REG_NOTES (insn));
|
REG_NOTES (insn));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue