------- 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