This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Ping^2 Re: [PATCH, ARM] Fix PR 43872, incorrectly aligned VLAs
- From: Chung-Lin Tang <cltang at codesourcery dot com>
- To: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Cc: Richard Earnshaw <rearnsha at arm dot com>
- Date: Tue, 15 Mar 2011 09:38:36 +0800
- Subject: Ping^2 Re: [PATCH, ARM] Fix PR 43872, incorrectly aligned VLAs
- References: <4D5CF204.4080306@codesourcery.com> <4D74E748.70104@codesourcery.com>
Ping.
On 2011/3/7 10:10 PM, Chung-Lin Tang wrote:
> Ping.
>
> On 2011/2/17 06:01 PM, Chung-Lin Tang wrote:
>> Hi,
>> this PR is a case where we have a leaf function with a zero-size frame,
>> that calls alloca() (here through a C99 VLA).
>>
>> The ARM backend recognizes the leaf-and-no-frame opportunity to save an
>> unneeded stack alignment. But when calling alloca(), the allocated block
>> is of BIGGEST_ALIGNMENT, which is 8-bytes under current AAPCS. Thus a
>> stack align may still be needed to place the alloca() returned block
>> properly.
>>
>> This patch adjusts the early return condition with !cfun->calls_alloca.
>> Tested without regressions on ARM-Linux, okay for trunk?
>>
>> Also related, the BIGGEST_ALIGNMENT defined for ARM is currently
>> ABI-based; 64-bits for AAPCS targets, and 32 for old ABI. Should this
>> also consider arch-level as well? i.e. anything >= ARMv5TE (with ldrd)
>> should have this set to 64.
>>
>> Thanks,
>> Chung-Lin
>>
>> 2011-02-17 Chung-Lin Tang <cltang@codesourcery.com>
>>
>> PR target/43872
>> * config/arm/arm.c (arm_get_frame_offsets): Adjust early
>> return condition with !cfun->calls_alloca.
>