Richard Guenther wrote:
> On Fri, Jul 27, 2012 at 5:24 PM, Ulrich Weigand <uweig...@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.weig...@de.ibm.com

Reply via email to