diff options
| author | sayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-09-12 17:13:55 +0000 |
|---|---|---|
| committer | sayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-09-12 17:13:55 +0000 |
| commit | 6dbdfeeb2c19eea81fbf2224193e67815a8beaa9 (patch) | |
| tree | b765e14ee4d8f9cfada1547337dfad4e0510fc9e | |
| parent | b61243988c25031dfc38029fbb87ba950f170935 (diff) | |
| download | ppe42-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/ChangeLog | 7 | ||||
| -rw-r--r-- | gcc/config/alpha/alpha.c | 10 |
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 |

