Commit b598cb38 by Roger Sayle Committed by Roger Sayle

re PR target/22223 (New testsuite failure on Tru64 UNIX V5.1B: gcc.c-torture/compile/20050622-1.c)


	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
parent f63fc0d9
2006-09-12 Roger Sayle <roger@eyesopen.com> 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 middle-end/4520
PR bootstrap/28784 PR bootstrap/28784
* cselib.c (cselib_hash_rtx): Avoid hashing on the address of labels * cselib.c (cselib_hash_rtx): Avoid hashing on the address of labels
......
...@@ -7836,6 +7836,10 @@ alpha_start_function (FILE *file, const char *fnname, ...@@ -7836,6 +7836,10 @@ alpha_start_function (FILE *file, const char *fnname,
HOST_WIDE_INT sa_size; HOST_WIDE_INT sa_size;
/* Complete stack size needed. */ /* Complete stack size needed. */
unsigned HOST_WIDE_INT frame_size; 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. */ /* Offset from base reg to register save area. */
HOST_WIDE_INT reg_offset; HOST_WIDE_INT reg_offset;
char *entry_label = (char *) alloca (strlen (fnname) + 6); char *entry_label = (char *) alloca (strlen (fnname) + 6);
...@@ -7960,7 +7964,7 @@ alpha_start_function (FILE *file, const char *fnname, ...@@ -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", fprintf (file, "\t.frame $%d," HOST_WIDE_INT_PRINT_DEC ",$26,%d\n",
(frame_pointer_needed (frame_pointer_needed
? HARD_FRAME_POINTER_REGNUM : STACK_POINTER_REGNUM), ? 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); current_function_pretend_args_size);
/* Describe which registers were spilled. */ /* Describe which registers were spilled. */
...@@ -7982,7 +7986,7 @@ alpha_start_function (FILE *file, const char *fnname, ...@@ -7982,7 +7986,7 @@ alpha_start_function (FILE *file, const char *fnname,
if (imask) if (imask)
{ {
fprintf (file, "\t.mask 0x%lx," HOST_WIDE_INT_PRINT_DEC "\n", 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) for (i = 0; i < 32; ++i)
if (imask & (1UL << i)) if (imask & (1UL << i))
...@@ -7991,7 +7995,7 @@ alpha_start_function (FILE *file, const char *fnname, ...@@ -7991,7 +7995,7 @@ alpha_start_function (FILE *file, const char *fnname,
if (fmask) if (fmask)
fprintf (file, "\t.fmask 0x%lx," HOST_WIDE_INT_PRINT_DEC "\n", 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 #if TARGET_ABI_OPEN_VMS
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment