https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64893
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Can we change the arguments for __builtin_aarch64_im_lane_boundsi to take three
arguments, the two sizeof's and the idx? And do the division inside the
compiler? Also change the argument types of __builtin_aarch64_im_lane_boundsi
to be size_type_node instead.
Something like:
#define __AARCH64_NUM_LANES(__v) (sizeof (__v) / sizeof (__v[0]))
#define __AARCH64_LANE_CHECK(__vec, __idx) \
__builtin_aarch64_im_lane_boundsi (__AARCH64_NUM_LANES (__vec), __idx)
Into:
#define __AARCH64_NUM_LANES(__v) (sizeof (__v) / sizeof (__v[0]))
#define __AARCH64_LANE_CHECK(__vec, __idx) \
__builtin_aarch64_im_lane_boundsi (sizeof (__v), sizeof(__v[0]), __idx)
Both of these things should allow C++ to work without much work.