PATCH: Fix -xauto for ia64 assembler
H. J. Lu
hjl@lucon.org
Thu May 20 18:48:00 GMT 2004
With -xauto, we forgot to restore old operands. This patch fixes it.
Jim, did I miss anything else?
H.J.
-------------- next part --------------
2004-05-20 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-ia64.c (remove_marked_resource): Restore the old
operands when inserting srlz.i/srlz.d.
--- gas/config/tc-ia64.c.auto 2004-05-07 13:22:20.000000000 -0700
+++ gas/config/tc-ia64.c 2004-05-20 11:45:22.267661390 -0700
@@ -9559,6 +9559,8 @@ remove_marked_resource (rs)
{
int oldqp = CURR_SLOT.qp_regno;
struct ia64_opcode *oldidesc = CURR_SLOT.idesc;
+ expressionS oldopnd [6];
+ memcpy (oldopnd, CURR_SLOT.opnd, sizeof (oldopnd));
/* Manually jam a srlz.i insn into the stream */
CURR_SLOT.qp_regno = 0;
CURR_SLOT.idesc = ia64_find_opcode ("srlz.i");
@@ -9568,6 +9570,7 @@ remove_marked_resource (rs)
emit_one_bundle ();
CURR_SLOT.qp_regno = oldqp;
CURR_SLOT.idesc = oldidesc;
+ memcpy (CURR_SLOT.opnd, oldopnd, sizeof (oldopnd));
}
insn_group_break (1, 0, 0);
break;
@@ -9582,6 +9585,8 @@ remove_marked_resource (rs)
{
int oldqp = CURR_SLOT.qp_regno;
struct ia64_opcode *oldidesc = CURR_SLOT.idesc;
+ expressionS oldopnd [6];
+ memcpy (oldopnd, CURR_SLOT.opnd, sizeof (oldopnd));
/* Manually jam a srlz.d insn into the stream */
CURR_SLOT.qp_regno = 0;
CURR_SLOT.idesc = ia64_find_opcode ("srlz.d");
@@ -9591,6 +9596,7 @@ remove_marked_resource (rs)
emit_one_bundle ();
CURR_SLOT.qp_regno = oldqp;
CURR_SLOT.idesc = oldidesc;
+ memcpy (CURR_SLOT.opnd, oldopnd, sizeof (oldopnd));
}
break;
case IA64_DVS_IMPLIED:
More information about the Binutils
mailing list