------- Comment #3 from drow at gcc dot gnu dot org 2010-02-22 21:14 -------
Subject: Re: vld4 and vst4 intrinsics are not handled
correctly
On Fri, Feb 19, 2010 at 11:08:18AM -0000, rguenth at gcc dot gnu dot org wrote:
> Likely because of the union in
>
> __extension__ static __inline void __attribute__ ((__always_inline__))
> vst4_u8 (uint8_t * __a, uint8x8x4_t __b)
> {
> union { uint8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
> __builtin_neon_vst4v8qi ((__builtin_neon_qi *) __a, __bu.__o);
> }
>
> which does copy-initialization of __bu.
Right. FYI, my best idea to date of how to fix this is to convert the
multiple-vector types (like uint8x8x4_t) to builtin types. At that
point we can use the neon_reinterpret patterns to do the necessary
type punning without involving __builtin_neon_oi and the union.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43118