diff options
author | Jakub Jelinek <jakub@gcc.gnu.org> | 2011-02-28 18:05:07 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2011-02-28 18:05:07 +0100 |
commit | 80a832cd25fa03a93768f3d2bc05d23a06a87e26 (patch) | |
tree | 516bcbdd71d1bf924c03920302af2c3b2d95b859 /gcc/caller-save.c | |
parent | d154f92719efa355bef3c2a19b62e8c8dd720172 (diff) | |
download | gcc-80a832cd25fa03a93768f3d2bc05d23a06a87e26.zip gcc-80a832cd25fa03a93768f3d2bc05d23a06a87e26.tar.gz gcc-80a832cd25fa03a93768f3d2bc05d23a06a87e26.tar.bz2 |
re PR middle-end/47893 (4.6 miscompiles mesa on i686)
PR middle-end/47893
* rtl.h (ASLK_REDUCE_ALIGN, ASLK_RECORD_PAD): Define.
(assign_stack_local_1): Change last argument type to int.
* function.c (assign_stack_local_1): Replace reduce_alignment_ok
argument with kind. If bit ASLK_RECORD_PAD is not set in it,
don't record padding space into frame_space_list nor
use those areas.
(assign_stack_local): Adjust caller.
(assign_stack_temp_for_type): Call assign_stack_local_1 instead
of assign_stack_local, pass 0 as last argument.
* caller-save.c (setup_save_areas): Adjust assign_stack_local_1
callers.
* gcc.dg/pr47893.c: New test.
From-SVN: r170568
Diffstat (limited to 'gcc/caller-save.c')
-rw-r--r-- | gcc/caller-save.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/caller-save.c b/gcc/caller-save.c index 7f7e222..160d2e9 100644 --- a/gcc/caller-save.c +++ b/gcc/caller-save.c @@ -647,7 +647,8 @@ setup_save_areas (void) saved_reg->slot = assign_stack_local_1 (regno_save_mode[regno][1], - GET_MODE_SIZE (regno_save_mode[regno][1]), 0, true); + GET_MODE_SIZE (regno_save_mode[regno][1]), 0, + ASLK_REDUCE_ALIGN); if (dump_file != NULL) fprintf (dump_file, "%d uses a new slot\n", regno); } @@ -705,7 +706,7 @@ setup_save_areas (void) regno_save_mem[i][j] = assign_stack_local_1 (regno_save_mode[i][j], GET_MODE_SIZE (regno_save_mode[i][j]), - 0, true); + 0, ASLK_REDUCE_ALIGN); /* Setup single word save area just in case... */ for (k = 0; k < j; k++) |