diff options
author | H.J. Lu <hjl@lucon.org> | 2005-05-17 17:23:37 +0000 |
---|---|---|
committer | H.J. Lu <hjl@lucon.org> | 2005-05-17 17:23:37 +0000 |
commit | 457abddb8c9411187392ccf4a67edef3787a95a1 (patch) | |
tree | 6cab08a56d98a067399f6df16d0c239c5e4059d4 /bfd/elfxx-ia64.c | |
parent | 74f6701b6065bc9d87a17085cedee5287e36c633 (diff) | |
download | binutils-redhat-457abddb8c9411187392ccf4a67edef3787a95a1.tar.gz |
2005-05-17 H.J. Lu <hongjiu.lu@intel.com>
* elfxx-ia64.c (elfNN_ia64_relax_br): Keep the original
predicate on slot 0 only if slot 0 isn't br.
Diffstat (limited to 'bfd/elfxx-ia64.c')
-rw-r--r-- | bfd/elfxx-ia64.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/bfd/elfxx-ia64.c b/bfd/elfxx-ia64.c index cc8e5beebe..0a906ec5f5 100644 --- a/bfd/elfxx-ia64.c +++ b/bfd/elfxx-ia64.c @@ -795,9 +795,12 @@ elfNN_ia64_relax_br (bfd_byte *contents, bfd_vma off) if (template == 0x16) { - /* For BBB, we need to put nop.m in slot 0 and keep the original - predicate. */ - t0 &= PREDICATE_BITS << 5; + /* For BBB, we need to put nop.m in slot 0. We keep the original + predicate only if slot 0 isn't br. */ + if (br_slot == 0) + t0 = 0LL; + else + t0 &= PREDICATE_BITS << 5; t0 |= 0x1LL << (X4_SHIFT + 5); } else |