aboutsummaryrefslogtreecommitdiff
path: root/gcc/caller-save.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@gcc.gnu.org>2011-02-28 18:05:07 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2011-02-28 18:05:07 +0100
commit80a832cd25fa03a93768f3d2bc05d23a06a87e26 (patch)
tree516bcbdd71d1bf924c03920302af2c3b2d95b859 /gcc/caller-save.c
parentd154f92719efa355bef3c2a19b62e8c8dd720172 (diff)
downloadgcc-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.c5
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++)