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, int **ptr_ptr)
      11  {
      12    svld1rq (pg); /* { dg-error {too few arguments to function 'svld1rq'} } */
      13    svld1rq (pg, s8_ptr, 0); /* { dg-error {too many arguments to function 'svld1rq'} } */
      14    svld1rq (0, s8_ptr); /* { dg-error {passing 'int' to argument 1 of 'svld1rq', which expects 'svbool_t'} } */
      15    svld1rq (pg, 0); /* { dg-error {passing 'int' to argument 2 of 'svld1rq', which expects a pointer type} } */
      16    svld1rq (pg, (int32_t *) 0);
      17    svld1rq (pg, void_ptr); /* { dg-error {passing 'void \*' to argument 2 of 'svld1rq', but 'void' is not a valid SVE element type} } */
      18    svld1rq (pg, s_ptr); /* { dg-error {passing 'struct s \*' to argument 2 of 'svld1rq', but 'struct s' is not a valid SVE element type} } */
      19    svld1rq (pg, f32_ptr);
      20    svld1rq (pg, cf32_ptr); /* { dg-error {passing '_Complex float \*' to argument 2 of 'svld1rq', but 'complex float' is not a valid SVE element type} } */
      21    svld1rq (pg, ptr_ptr); /* { dg-error {passing 'int \*\*' to argument 2 of 'svld1rq', but 'int \*' is not a valid SVE element type} } */
      22    return svld1rq (pg, s8_ptr); /* { dg-error {incompatible types when returning type 'svint8_t' but 'svuint8_t' was expected} } */
      23  }