From: Chung-Lin Tang Date: Thu, 17 Mar 2011 14:02:12 +0000 (+0000) Subject: re PR target/43872 (VLAs are not aligned correctly on ARM) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7c71147df33fe3ee5e8352fba3d6cfbc15810604;p=gcc.git re PR target/43872 (VLAs are not aligned correctly on ARM) 2011-03-17 Chung-Lin Tang PR target/43872 * config/arm/arm.c (arm_get_frame_offsets): Adjust early return condition with !cfun->calls_alloca. From-SVN: r171096 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d5a5592e04e..bc80f7ab8fb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-03-17 Chung-Lin Tang + + PR target/43872 + * config/arm/arm.c (arm_get_frame_offsets): Adjust early + return condition with !cfun->calls_alloca. + 2011-03-17 Richard Guenther PR bootstrap/48148 diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 85150027b9d..c6ba3fb28fe 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -15415,7 +15415,10 @@ arm_get_frame_offsets (void) offsets->soft_frame = offsets->saved_regs + CALLER_INTERWORKING_SLOT_SIZE; /* A leaf function does not need any stack alignment if it has nothing on the stack. */ - if (leaf && frame_size == 0) + if (leaf && frame_size == 0 + /* However if it calls alloca(), we have a dynamically allocated + block of BIGGEST_ALIGNMENT on stack, so still do stack alignment. */ + && ! cfun->calls_alloca) { offsets->outgoing_args = offsets->soft_frame; offsets->locals_base = offsets->soft_frame;