* config/tc-ia64.c (remove_marked_resource): Save, clear and
	restore the old slot when inserting srlz.i/srlz.d.
This commit is contained in:
H.J. Lu
2004-05-28 19:26:31 +00:00
parent 18ed0c4eb8
commit 888a75bebc
2 changed files with 11 additions and 10 deletions

View File

@@ -1,3 +1,8 @@
2004-05-28 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-ia64.c (remove_marked_resource): Save, clear and
restore the old slot when inserting srlz.i/srlz.d.
2004-05-28 Andrew Stubbs <andrew.stubbs@superh.com>
* Makefile.am: Regenerate dependecies.

View File

@@ -9560,17 +9560,15 @@ remove_marked_resource (rs)
insn_group_break (1, 0, 0);
if (rs->insn_srlz < STATE_SRLZ)
{
int oldqp = CURR_SLOT.qp_regno;
struct ia64_opcode *oldidesc = CURR_SLOT.idesc;
struct slot oldslot = CURR_SLOT;
/* Manually jam a srlz.i insn into the stream */
CURR_SLOT.qp_regno = 0;
memset (&CURR_SLOT, 0, sizeof (CURR_SLOT));
CURR_SLOT.idesc = ia64_find_opcode ("srlz.i");
instruction_serialization ();
md.curr_slot = (md.curr_slot + 1) % NUM_SLOTS;
if (++md.num_slots_in_use >= NUM_SLOTS)
emit_one_bundle ();
CURR_SLOT.qp_regno = oldqp;
CURR_SLOT.idesc = oldidesc;
CURR_SLOT = oldslot;
}
insn_group_break (1, 0, 0);
break;
@@ -9583,17 +9581,15 @@ remove_marked_resource (rs)
if (rs->data_srlz < STATE_STOP)
insn_group_break (1, 0, 0);
{
int oldqp = CURR_SLOT.qp_regno;
struct ia64_opcode *oldidesc = CURR_SLOT.idesc;
struct slot oldslot = CURR_SLOT;
/* Manually jam a srlz.d insn into the stream */
CURR_SLOT.qp_regno = 0;
memset (&CURR_SLOT, 0, sizeof (CURR_SLOT));
CURR_SLOT.idesc = ia64_find_opcode ("srlz.d");
data_serialization ();
md.curr_slot = (md.curr_slot + 1) % NUM_SLOTS;
if (++md.num_slots_in_use >= NUM_SLOTS)
emit_one_bundle ();
CURR_SLOT.qp_regno = oldqp;
CURR_SLOT.idesc = oldidesc;
CURR_SLOT = oldslot;
}
break;
case IA64_DVS_IMPLIED: