aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@tuliptree.org>2001-04-14 03:51:40 +0000
committerJim Wilson <wilson@tuliptree.org>2001-04-14 03:51:40 +0000
commit1deb8127a2a7099d84e4de49128aaeb0e5125b30 (patch)
tree25e40f572240f4869c840c12db4faa6b2183d116
parentbaf80c32aec74040d4bdb3ad85997f2253e832f7 (diff)
downloadgdb-1deb8127a2a7099d84e4de49128aaeb0e5125b30.zip
gdb-1deb8127a2a7099d84e4de49128aaeb0e5125b30.tar.gz
gdb-1deb8127a2a7099d84e4de49128aaeb0e5125b30.tar.bz2
Fix latent bug exposed by a gcc-3 bug fix.
* tc-ia64.c (is_conditional_branch): Return true for br, brl, and br. excluding br.i.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-ia64.c18
2 files changed, 14 insertions, 9 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 873c16a..749d89b 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2001-04-13 Jim Wilson <wilson@redhat.com>
+
+ * tc-ia64.c (is_conditional_branch): Return true for br, brl, and br.
+ excluding br.i.
+
2001-04-13 Jakub Jelinek <jakub@redhat.com>
* config/obj-elf.c (obj_elf_change_section): Add entsize argument,
diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c
index a07ee7c..1f85ee4 100644
--- a/gas/config/tc-ia64.c
+++ b/gas/config/tc-ia64.c
@@ -6889,19 +6889,19 @@ ia64_canonicalize_symbol_name (name)
return name;
}
+/* Return true if idesc is a conditional branch instruction. */
+
static int
is_conditional_branch (idesc)
struct ia64_opcode *idesc;
{
- return (strncmp (idesc->name, "br", 2) == 0
- && (strcmp (idesc->name, "br") == 0
- || strncmp (idesc->name, "br.cond", 7) == 0
- || strncmp (idesc->name, "br.call", 7) == 0
- || strncmp (idesc->name, "br.ret", 6) == 0
- || strcmp (idesc->name, "brl") == 0
- || strncmp (idesc->name, "brl.cond", 7) == 0
- || strncmp (idesc->name, "brl.call", 7) == 0
- || strncmp (idesc->name, "brl.ret", 6) == 0));
+ /* br is a conditional branch. Everything that starts with br. except
+ br.ia is a conditional branch. Everything that starts with brl is a
+ conditional branch. */
+ return (idesc->name[0] == 'b' && idesc->name[1] == 'r'
+ && (idesc->name[2] == '\0'
+ || (idesc->name[2] == '.' && idesc->name[3] != 'i')
+ || idesc->name[2] == 'l'));
}
/* Return whether the given opcode is a taken branch. If there's any doubt,