This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[RFA 4.7/4.6] Re: [PATCH v2] Target-specific limits on vector alignment
- From: "Ulrich Weigand" <uweigand at de dot ibm dot com>
- To: richard dot guenther at gmail dot com (Richard Guenther)
- Cc: rearnsha at arm dot com (Richard Earnshaw), gcc-patches at gcc dot gnu dot org (gcc-patches at gcc dot gnu dot org), ramana dot radhakrishnan at linaro dot org
- Date: Tue, 7 Aug 2012 16:56:38 +0200 (CEST)
- Subject: [RFA 4.7/4.6] Re: [PATCH v2] Target-specific limits on vector alignment
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.)
Bye,
Ulrich
--
Dr. Ulrich Weigand
GNU Toolchain for Linux on System z and Cell BE
Ulrich.Weigand@de.ibm.com