2004-05-28 H.J. Lu <hongjiu.lu@intel.com>
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 28 May 2004 19:26:31 +0000 (19:26 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 28 May 2004 19:26:31 +0000 (19:26 +0000)
* config/tc-ia64.c (remove_marked_resource): Save, clear and
restore the old slot when inserting srlz.i/srlz.d.

gas/ChangeLog
gas/config/tc-ia64.c

index 11007a8273d94152add4bc175017d325625fe7ae..a3c5a085b35741be72c21b6f066502c40b8db551 100644 (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.
index 8c3756778f391ed9ae0f721f330eea86d0127add..3d153ae69761b706dad1077d62488060b218d195 100644 (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: