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
       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  }