aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>1998-01-24 00:44:52 +0000
committerDoug Evans <dje@google.com>1998-01-24 00:44:52 +0000
commitfbe2ad4648553027fecca48393d829e1ba603904 (patch)
tree6a77166b81ac234ac05427a54d430af73e8e4012
parentea32bce77398ac73f68e9e3be4a0920fcbcd270b (diff)
downloadgdb-fbe2ad4648553027fecca48393d829e1ba603904.zip
gdb-fbe2ad4648553027fecca48393d829e1ba603904.tar.gz
gdb-fbe2ad4648553027fecca48393d829e1ba603904.tar.bz2
* config/tc-txvu.c (assemble_insn): Delete test for !isalpha
after parsing mnemonic. ASCII operand chars are case insensitive.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-txvu.c28
2 files changed, 16 insertions, 17 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 2a930a7..ef8b4cd 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,4 +1,9 @@
start-sanitize-sky
+Fri Jan 23 16:44:19 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * config/tc-txvu.c (assemble_insn): Delete test for !isalpha
+ after parsing mnemonic. ASCII operand chars are case insensitive.
+
Thu Jan 22 20:30:24 1998 Doug Evans <devans@seba.cygnus.com>
* config/tc-txvu.c (assemble_insn): Commas moved to opcode table.
diff --git a/gas/config/tc-txvu.c b/gas/config/tc-txvu.c
index 7da6b94..502f28a 100644
--- a/gas/config/tc-txvu.c
+++ b/gas/config/tc-txvu.c
@@ -184,8 +184,6 @@ assemble_insn (str, lower_p, buf)
break;
if (*syn != '\0')
continue;
- if (isalpha (*str))
- continue;
/* Scan the syntax string. If it doesn't match, try the next one. */
@@ -204,10 +202,12 @@ assemble_insn (str, lower_p, buf)
const struct txvu_operand *operand;
const char *errmsg;
- /* Non operand chars must match exactly. */
+ /* Non operand chars must match exactly.
+ Operand chars that are letters are not part of symbols
+ and are case insensitive. */
if (*syn < 128)
{
- if (*str == *syn)
+ if (tolower (*str) == tolower (*syn))
{
if (*syn == ' ')
past_opcode_p = 1;
@@ -264,6 +264,8 @@ assemble_insn (str, lower_p, buf)
s = str;
/* Pick the suffix out and parse it. */
+ /* ??? Hmmm ... there may not be any need to nul-terminate the
+ string, and it may in fact complicate things. */
for (t = *s == '.' ? s + 1 : s; *t && isalpha (*t); ++t)
continue;
c = *t;
@@ -272,9 +274,10 @@ assemble_insn (str, lower_p, buf)
*t = c;
if (errmsg)
{
- /* This can happen in "blle foo" and we're currently using
- the template "b%q%.n %j". The "bl" insn occurs later in
- the table so "lle" isn't an illegal suffix. */
+ /* This can happen, for example, in ARC's in "blle foo" and
+ we're currently using the template "b%q%.n %j". The "bl"
+ insn occurs later in the table so "lle" isn't an illegal
+ suffix. */
break;
}
/* Insert the suffix's value into the insn. */
@@ -312,6 +315,7 @@ assemble_insn (str, lower_p, buf)
/* Is there anything left to parse?
We don't check for this at the top because we want to parse
any trailing fake arguments in the syntax string. */
+ /* ??? This doesn't allow operands with a legal value of "". */
if (*str == '\0')
break;
@@ -355,16 +359,6 @@ assemble_insn (str, lower_p, buf)
const char *errmsg = NULL;
insn = (*operand->insert) (insn, operand, mods,
value, &errmsg);
-#if 0
- if (errmsg != (const char *) NULL)
- as_warn (errmsg);
-#endif
- /* FIXME: We want to try shimm insns for limm ones. But if
- the constant won't fit, we must go on to try the next
- possibility. Where do we issue warnings for constants
- that are too big then? At present, we'll flag the insn
- as unrecognizable! Maybe have the "bad instruction"
- error message include our `errmsg'? */
if (errmsg != (const char *) NULL)
break;
}