Hi!

On Fri, Oct 19, 2018 at 04:27:27PM -0500, Bill Schmidt wrote:
> The x86 intrinsic compatibility headers contain a couple of instances of
> undefined behavior where a cast to an aligned type is used when that
> alignment is not guaranteed by the expression to be cast from.  This
> patch fixes that problem by replacing the aligned types with unaligned
> versions of the same type.

How did you find these?  What I'm after is, did you find all instances?

> --- gcc/config/rs6000/xmmintrin.h     (revision 265318)
> +++ gcc/config/rs6000/xmmintrin.h     (working copy)
> @@ -85,6 +85,9 @@
>     vector types, and their scalar components.  */
>  typedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__));
>  
> +/* Unaligned version of the same type.  */
> +typedef float __m128_u __attribute__ ((__vector_size__ (16), __may_alias__));

This is identical to __m128.  Do you want aligned(1) as well?

Okay for trunk if you want that; if not, this needs explanation (a code
comment or similar).

Thanks!


Segher

Reply via email to