This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [RFA 4.7/4.6] Re: [PATCH v2] Target-specific limits on vector alignment
- From: Richard Earnshaw <rearnsha at arm dot com>
- To: Richard Guenther <richard dot guenther at gmail dot com>
- Cc: Ulrich Weigand <uweigand at de dot ibm dot com>, "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>, "ramana dot radhakrishnan at linaro dot org" <ramana dot radhakrishnan at linaro dot org>
- Date: Tue, 07 Aug 2012 16:08:52 +0100
- Subject: Re: [RFA 4.7/4.6] Re: [PATCH v2] Target-specific limits on vector alignment
- References: <CAFiYyc1V3uC=SHdjEgKaFU8_TNgYZ2XUB18Kj3-icQMi1DJGwQ@mail.gmail.com> <201208071456.q77EucUF024143@d06av02.portsmouth.uk.ibm.com> <CAFiYyc0q2+dGqDEdJ1uo4Z=Qs=kJzji_yd37cRGPngPWhZw=2Q@mail.gmail.com>
On 07/08/12 16:04, Richard Guenther wrote:
> On Tue, Aug 7, 2012 at 4:56 PM, Ulrich Weigand <uweigand@de.ibm.com> wrote:
>> Richard Guenther wrote:
>>> On Fri, Jul 27, 2012 at 5:24 PM, Ulrich Weigand <uweigand@de.ibm.com> wrote:
>>>> ChangeLog:
>>>>
>>>> * target.def (vector_alignment): New target hook.
>>>> * doc/tm.texi.in (TARGET_VECTOR_ALIGNMENT): Document new hook.
>>>> * doc/tm.texi: Regenerate.
>>>> * targhooks.c (default_vector_alignment): New function.
>>>> * targhooks.h (default_vector_alignment): Add prototype.
>>>> * stor-layout.c (layout_type): Use targetm.vector_alignment.
>>>> * config/arm/arm.c (arm_vector_alignment): New function.
>>>> (TARGET_VECTOR_ALIGNMENT): Define.
>>>>
>>>> * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Use
>>>> vector type alignment instead of size.
>>>> * tree-vect-loop-manip.c (vect_do_peeling_for_loop_bound): Use
>>>> element type size directly instead of computing it from alignment.
>>>> Fix variable naming and comment.
>>>>
>>>> testsuite/ChangeLog:
>>>>
>>>> * lib/target-supports.exp
>>>> (check_effective_target_vect_natural_alignment): New function.
>>>> * gcc.dg/align-2.c: Only run on targets with natural alignment
>>>> of vector types.
>>>> * gcc.dg/vect/slp-25.c: Adjust tests for targets without natural
>>>> alignment of vector types.
>>
>>
>>>> OK for mainline?
>>>
>>> Ok.
>>
>> Would it be OK to backport this to 4.7 and possibly 4.6?
>>
>> This patch represents a change in the ABI on ARM (the alignment could
>> potentially affect struct member offsets, for example), which could
>> conceivably cause incompatibilities with code compiled with older
>> versions of GCC. We had originally decided we nevertheless want to
>> implement this change on ARM, because:
>>
>> - GCC is now in compliance with the platform ABI document
>> - the old code could actually be buggy since GCC *assumed* 16-byte
>> alignment that wasn't actually guaranteed
>> - code actually affected by this change ought to be rare (code using
>> NEON vector types is rare in the first place, code using *structure
>> members* of such types is even rarer, and code using such structures
>> in cross-module APIs seems to be extremely rare)
>>
>> Nevertheless, given we do want to make this change, it would be best
>> to roll it out as quickly as possible, to minimize the time period
>> where people might use old (not yet fixed) compilers to generate
>> non-ABI-compliant binaries. Thus, we think it would be good for
>> the change to be applied to all still open release branches as well.
>>
>> (Note that while the patch contains changes to common code, those
>> should be no-ops for all targets that do not implement the new hook.)
>
> I'll defer the decision to the target maintainers. But please double-check
> for any changes in the vectorizer parts when backporting to 4.6.
>
My inclination is to back-port this to all maintained branches (for
consistency).
However, it does need to be release-noted.
R.