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.