1 /* { dg-do compile } */
2 /* { dg-options "-std=c99" } */
3 
4 #include <arm_sve.h>
5 
6 struct s { signed char x; };
7 
8 svuint8_t
f1(svbool_t pg,signed char * s8_ptr,void * void_ptr,struct s * s_ptr,float * f32_ptr,_Complex float * cf32_ptr,svint8_t s8,svfloat32_t f32,struct s s)9 f1 (svbool_t pg, signed char *s8_ptr, void *void_ptr, struct s *s_ptr,
10     float *f32_ptr, _Complex float *cf32_ptr, svint8_t s8, svfloat32_t f32,
11     struct s s)
12 {
13   svst1 (pg, s8_ptr); /* { dg-error {too few arguments to function 'svst1'} } */
14   svst1 (pg, s8_ptr, s8, 0); /* { dg-error {too many arguments to function 'svst1'} } */
15   svst1 (0, s8_ptr, s8); /* { dg-error {passing 'int' to argument 1 of 'svst1', which expects 'svbool_t'} } */
16   svst1 (pg, void_ptr, 0); /* { dg-error {passing 'int' to argument 3 of 'svst1', which expects an SVE vector type} } */
17   svst1 (pg, void_ptr, pg); /* { dg-error {'svst1' has no form that takes 'svbool_t' arguments} } */
18   svst1 (pg, 0, s8);
19   svst1 (pg, (int32_t *) 0, s8); /* { dg-warning "passing argument 2 of 'svst1_s8' from incompatible pointer type" } */
20   svst1 (pg, void_ptr, s8);
21   svst1 (pg, s_ptr, s8); /* { dg-warning "passing argument 2 of 'svst1_s8' from incompatible pointer type" } */
22   svst1 (pg, f32_ptr, s8); /* { dg-warning "passing argument 2 of 'svst1_s8' from incompatible pointer type" } */
23   svst1 (pg, f32_ptr, f32);
24   svst1 (pg, cf32_ptr, f32); /* { dg-warning "passing argument 2 of 'svst1_f32' from incompatible pointer type" } */
25   svst1 (pg, s, s8); /* { dg-error {passing 'struct s' to argument 2 of 'svst1', which expects a scalar pointer} } */
26 }
27