aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2002-05-01 09:54:31 +0000
committerNick Clifton <nickc@redhat.com>2002-05-01 09:54:31 +0000
commitd8731e7dad5a4451c4214cc99fe76ca0e2c4d9ff (patch)
treea22d3d7377b55deb71459b80c758396f864650be
parent818c39a387392564763ae26fd9ef1837b448fb48 (diff)
downloadgdb-d8731e7dad5a4451c4214cc99fe76ca0e2c4d9ff.zip
gdb-d8731e7dad5a4451c4214cc99fe76ca0e2c4d9ff.tar.gz
gdb-d8731e7dad5a4451c4214cc99fe76ca0e2c4d9ff.tar.bz2
Generate warning if the same destination register is used in parallel
instructions.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-sh.c21
2 files changed, 26 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 76fe139..76b97ad 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2002-05-01 Arati Dikey <aratid@kpit.com>
+
+ * tc-sh.c (get_specific): Generate warning if the same
+ destination register is used in parallel instructions.
+
2002-05-01 Andrew Macleod <amacleod@cygnus.com>
* config/tc-i386.c (extra_symbol_chars): Add '[' to the list.
diff --git a/gas/config/tc-sh.c b/gas/config/tc-sh.c
index 1f33e10..61a38fd 100644
--- a/gas/config/tc-sh.c
+++ b/gas/config/tc-sh.c
@@ -1566,6 +1566,27 @@ get_specific (opcode, operands)
sh_operand_info *user = operands + n;
sh_arg_type arg = this_try->arg[n];
+ /* If this is a parallel insn check to see if both
+ parts have the same destination register. */
+ if ((n == 2) && (this_try->nibbles[0] == PPI))
+ {
+ static boolean bIsPPI = false;
+ static int nLastDestReg;
+
+ if (!bIsPPI)
+ {
+ bIsPPI = true;
+ nLastDestReg = user->reg;
+ }
+ else /* Second insn. */
+ {
+ if (nLastDestReg == user->reg)
+ as_warn (_("destination register is same for parallel insns"));
+
+ bIsPPI = false;
+ }
+ }
+
switch (arg)
{
case A_DISP_PC: