From c0a13a4875dca9a3363b1e9e3afff1d86067247e Mon Sep 17 00:00:00 2001 From: Dave Anglin Date: Sun, 17 Jul 2005 00:33:45 +0000 Subject: [PATCH] * config/tc-hppa.c (pa_ip): Search entire mnemonic before considering promoted match. --- gas/ChangeLog | 5 +++++ gas/config/tc-hppa.c | 22 ++++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 56ec46eec5..87e89ff31c 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2005-07-16 John David Anglin + + * config/tc-hppa.c (pa_ip): Search entire mnemonic before considering + promoted match. + 2005-07-16 Alan Modra * Makefile.am: Run "make dep-am". diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c index 81845ad53e..4e8c7647f8 100644 --- a/gas/config/tc-hppa.c +++ b/gas/config/tc-hppa.c @@ -1577,10 +1577,12 @@ pa_ip (str) char *s, c, *argstart, *name, *save_s; const char *args; int match = FALSE; + int need_promotion = FALSE; int comma = 0; int cmpltr, nullif, flag, cond, num; unsigned long opcode; struct pa_opcode *insn; + struct pa_opcode *promoted_insn = NULL; #ifdef OBJ_SOM /* We must have a valid space and subspace. */ @@ -3956,8 +3958,17 @@ pa_ip (str) if (match == TRUE && bfd_get_mach (stdoutput) < insn->arch) { - if (!bfd_set_arch_mach (stdoutput, bfd_arch_hppa, insn->arch)) - as_warn (_("could not update architecture and machine")); + if (need_promotion) + { + if (!bfd_set_arch_mach (stdoutput, bfd_arch_hppa, insn->arch)) + as_warn (_("could not update architecture and machine")); + } + else + { + match = FALSE; + if (!promoted_insn) + promoted_insn = insn; + } } failed: @@ -3973,6 +3984,13 @@ pa_ip (str) } else { + if (promoted_insn) + { + insn = promoted_insn; + need_promotion = TRUE; + s = argstart; + continue; + } as_bad (_("Invalid operands %s"), error_message); return; } -- 2.11.0