]> 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:23:53 +0000 (12:23 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Sat, 4 Jun 2005 19:23:53 +0000 (12:23 -0700)
        PR target/21888
        * config/alpha/alpha.c (alpha_align_insns): Don't insert nops
        until we've passed initial ldgp.

From-SVN: r100596

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

index dbffb903cd8bea4bbfdc3f96d8636a815fab3e08..f6b093a940a837e2fde5dc1eb332ba4da4e042db 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-04  Daniel Berlin  <dberlin@dberlin.org>
 
        * cfgexpand.c (expand_one_var): Use DECL_HAS_VALUE_EXPR_P.
index 908165a7523ce0af3950fa8edd7ef7c9ae502101..3f78c1600ea3aae210c48b3f249ca5323e0ccf17 100644 (file)
@@ -8974,7 +8974,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.  */
@@ -8992,6 +8992,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);
@@ -9047,6 +9049,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