summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>2006-09-12 17:13:55 +0000
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>2006-09-12 17:13:55 +0000
commit6dbdfeeb2c19eea81fbf2224193e67815a8beaa9 (patch)
treeb765e14ee4d8f9cfada1547337dfad4e0510fc9e
parentb61243988c25031dfc38029fbb87ba950f170935 (diff)
downloadppe42-gcc-6dbdfeeb2c19eea81fbf2224193e67815a8beaa9.tar.gz
ppe42-gcc-6dbdfeeb2c19eea81fbf2224193e67815a8beaa9.zip
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116895 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/alpha/alpha.c10
2 files changed, 14 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0a0d31b8cf2..0a87b0ee753 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
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
PR bootstrap/28784
* cselib.c (cselib_hash_rtx): Avoid hashing on the address of labels
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 1a3cf830f6b..0b3da82231e 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -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
OpenPOWER on IntegriCloud