2005-05-17 H.J. Lu <hongjiu.lu@intel.com>
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 17 May 2005 17:23:37 +0000 (17:23 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 17 May 2005 17:23:37 +0000 (17:23 +0000)
* elfxx-ia64.c (elfNN_ia64_relax_br): Keep the original
predicate on slot 0 only if slot 0 isn't br.

bfd/ChangeLog
bfd/elfxx-ia64.c

index e60fbd6c77791862222a010808dc7298fe4d29c2..8fb261fa913698ca15f19001fe83ddfea88f21f0 100644 (file)
@@ -1,3 +1,8 @@
+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.
+
 2005-05-17  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR 797
index cc8e5beebe31348a346d0a4ab7c308898daa34f8..0a906ec5f558db940a6e733ae096469c15acc6ae 100644 (file)
@@ -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