]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/21888 (bootstrap failure with linker relaxation enabled)
authorRichard Henderson <rth@redhat.com>
Sat, 4 Jun 2005 19:27:26 +0000 (12:27 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Sat, 4 Jun 2005 19:27:26 +0000 (12:27 -0700)
        PR target/21888
        * config/alpha/alpha.c (alpha_align_insns): Don't insert nops
        until we've passed initial ldgp.

From-SVN: r100598

gcc/ChangeLog
gcc/config/alpha/alpha.c

index 4711afe5d6188d84c1a0dbf7d0762b5872f2389f..c6ce7b86c71a5530774f0c0746c54c254a05f6c3 100644 (file)
@@ -1,3 +1,9 @@
+2005-06-04  Richard Henderson  <rth@redhat.com>
+
+        PR target/21888
+        * config/alpha/alpha.c (alpha_align_insns): Don't insert nops
+        until we've passed initial ldgp.
+
 2005-06-01  Richard Henderson  <rth@redhat.com>
 
        * configure.ac (HAVE_AS_JSRDIRECT_RELOCS): New.
index 4de6ac44ad24c29475b84de0e4812346e1352075..f9aef999f12b311ba04e97aa2c4891e083b193d3 100644 (file)
@@ -8829,7 +8829,7 @@ alpha_align_insns (unsigned int max_align,
   unsigned int align;
   /* OFS is the offset of the current insn in the insn group.  */
   int ofs;
-  int prev_in_use, in_use, len;
+  int prev_in_use, in_use, len, ldgp;
   rtx i, next;
 
   /* Let shorten branches care for assigning alignments to code labels.  */
@@ -8847,6 +8847,8 @@ alpha_align_insns (unsigned int max_align,
   if (GET_CODE (i) == NOTE)
     i = next_nonnote_insn (i);
 
+  ldgp = alpha_function_needs_gp ? 8 : 0;
+
   while (i)
     {
       next = (*next_group) (i, &in_use, &len);
@@ -8903,6 +8905,10 @@ alpha_align_insns (unsigned int max_align,
            }
        }
 
+      /* We may not insert padding inside the initial ldgp sequence.  */
+      else if (ldgp > 0)
+       ldgp -= len;
+
       /* If the group won't fit in the same INT16 as the previous,
         we need to add padding to keep the group together.  Rather
         than simply leaving the insn filling to the assembler, we