From: Charles Baylis <charles.bay...@linaro.org> gcc/ChangeLog:
<DATE> Charles Baylis <charles.bay...@linaro.org> * config/aarch64/aarch64-builtins.c (aarch64_types_storestruct_lane_qualifiers): Mark last argument with qualifier_struct_load_store_lane_index. gcc/testsuite/ChangeLog: <DATE> Charles Baylis <charles.bay...@linaro.org> * gcc.target/aarch64/simd/vst4q_lane.c: New test. Change-Id: If097c9d32eb6eb3d4c4e16db81f81e44a3154509 --- gcc/config/aarch64/aarch64-builtins.c | 2 +- gcc/testsuite/gcc.target/aarch64/simd/vst4q_lane.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/aarch64/simd/vst4q_lane.c diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c index 27046e2..f2fb939 100644 --- a/gcc/config/aarch64/aarch64-builtins.c +++ b/gcc/config/aarch64/aarch64-builtins.c @@ -258,7 +258,7 @@ aarch64_types_store1_qualifiers[SIMD_MAX_BUILTIN_ARGS] static enum aarch64_type_qualifiers aarch64_types_storestruct_lane_qualifiers[SIMD_MAX_BUILTIN_ARGS] = { qualifier_void, qualifier_pointer_map_mode, - qualifier_none, qualifier_none }; + qualifier_none, qualifier_struct_load_store_lane_index }; #define TYPES_STORESTRUCT_LANE (aarch64_types_storestruct_lane_qualifiers) #define CF0(N, X) CODE_FOR_aarch64_##N##X diff --git a/gcc/testsuite/gcc.target/aarch64/simd/vst4q_lane.c b/gcc/testsuite/gcc.target/aarch64/simd/vst4q_lane.c new file mode 100644 index 0000000..849f07a --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/simd/vst4q_lane.c @@ -0,0 +1,15 @@ +/* Test error message when passing an invalid value as a lane index. */ + +/* { dg-do compile } */ + +#include <arm_neon.h> + +void +f_vst4q_lane (int8_t * p, int8x16x4_t v) +{ + vst4q_lane_s8 (p, v, 16); +/* { dg-error "lane 16 out of range 0 - 15" "" { target *-*-* } 0 } */ + return; +} + + -- 1.9.1