[Bug target/60825] [AArch64] int64x1_t, uint64x1_t and float64x1_t are not treated as vector types

yufeng at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Apr 16 15:36:00 GMT 2014


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60825

--- Comment #2 from Yufeng Zhang <yufeng at gcc dot gnu.org> ---
Apart from the parameter passing and C++ name mangling issues, there is also an
issue w.r.t. the implicit conversion between the scalar types and their
vector-type peers.  For intrinsics code to be portable, conversion between neon
intrinsics vector types and the scalar types should be done via the
corresponding vcreat and vget_lane intrinsics.  Currently, arm_neon.h has the
following typedefs:

typedef int64_t int64x1_t;
typedef double float64x1_t;
typedef uint64_t uint64x1_t;

which have unfortunately allowed variables of e.g. type int64_t and type
int64x1_t, to be interoperable.  User code replying on this mistake may
encounter compilation errors after the fix.



More information about the Gcc-bugs mailing list