]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/22223 (New testsuite failure on Tru64 UNIX V5.1B: gcc.c-torture/compile...
authorRoger Sayle <roger@eyesopen.com>
Tue, 12 Sep 2006 17:13:55 +0000 (17:13 +0000)
committerRoger Sayle <sayle@gcc.gnu.org>
Tue, 12 Sep 2006 17:13:55 +0000 (17:13 +0000)
PR target/22223
* config/alpha/alpha.c (alpha_start_function): Don't emit stack
frame information for frames larger than 512 Kbytes on Tru64 when
using the native assembler.

From-SVN: r116895

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

index 0a0d31b8cf276f0f02bd30853affa9b6d89bcb07..0a87b0ee7531c565a0d05577e5c9b757a877f70e 100644 (file)
@@ -1,3 +1,10 @@
+2006-09-12  Roger Sayle  <roger@eyesopen.com>
+
+       PR target/22223
+       * config/alpha/alpha.c (alpha_start_function): Don't emit stack
+       frame information for frames larger than 512 Kbytes on Tru64 when
+       using the native assembler.
+
 2006-09-12  Roger Sayle  <roger@eyesopen.com>
 
        PR middle-end/4520
index 1a3cf830f6b99f45128b1e3325e3053b3cd5d394..0b3da82231e4b49ef9d800cbdfced1def5567403 100644 (file)
@@ -7836,6 +7836,10 @@ alpha_start_function (FILE *file, const char *fnname,
   HOST_WIDE_INT sa_size;
   /* Complete stack size needed.  */
   unsigned HOST_WIDE_INT frame_size;
+  /* The maximum debuggable frame size (512 Kbytes using Tru64 as).  */
+  unsigned HOST_WIDE_INT max_frame_size = TARGET_ABI_OSF && !TARGET_GAS
+                                         ? 524288
+                                         : 1UL << 31;
   /* Offset from base reg to register save area.  */
   HOST_WIDE_INT reg_offset;
   char *entry_label = (char *) alloca (strlen (fnname) + 6);
@@ -7960,7 +7964,7 @@ alpha_start_function (FILE *file, const char *fnname,
     fprintf (file, "\t.frame $%d," HOST_WIDE_INT_PRINT_DEC ",$26,%d\n",
             (frame_pointer_needed
              ? HARD_FRAME_POINTER_REGNUM : STACK_POINTER_REGNUM),
-            frame_size >= (1UL << 31) ? 0 : frame_size,
+            frame_size >= max_frame_size ? 0 : frame_size,
             current_function_pretend_args_size);
 
   /* Describe which registers were spilled.  */
@@ -7982,7 +7986,7 @@ alpha_start_function (FILE *file, const char *fnname,
       if (imask)
        {
          fprintf (file, "\t.mask 0x%lx," HOST_WIDE_INT_PRINT_DEC "\n", imask,
-                  frame_size >= (1UL << 31) ? 0 : reg_offset - frame_size);
+                  frame_size >= max_frame_size ? 0 : reg_offset - frame_size);
 
          for (i = 0; i < 32; ++i)
            if (imask & (1UL << i))
@@ -7991,7 +7995,7 @@ alpha_start_function (FILE *file, const char *fnname,
 
       if (fmask)
        fprintf (file, "\t.fmask 0x%lx," HOST_WIDE_INT_PRINT_DEC "\n", fmask,
-                frame_size >= (1UL << 31) ? 0 : reg_offset - frame_size);
+                frame_size >= max_frame_size ? 0 : reg_offset - frame_size);
     }
 
 #if TARGET_ABI_OPEN_VMS