aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/Warray-parameter-2.c
blob: 88f20e203ce7b8aa55d4d803306149b8d37e13d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/* PR c/50584 - No warning for passing small array to C99 static array
   declarator
   { dg-do compile }
   { dg-options "-Wall" } */

// Reduced from Glibc.

typedef struct FILE FILE;

int vfprintf (FILE*, const char*, __builtin_va_list);
int vfprintf (FILE*, const char*, __builtin_va_list);   // { dg-bogus "-Warray-parameter" }
int vfprintf (FILE*, const char*, __builtin_va_list);

int vfscanf (FILE*, const char*, __builtin_va_list);
int vfscanf (FILE*, const char*, __builtin_va_list);    // { dg-bogus "-Warray-parameter" }
int vfscanf (FILE*, const char*, __builtin_va_list);


/* Verify that mismatches in array/to pointer to va_list are still
   diagnosed.  */

int fva (__builtin_va_list);
int fva (__builtin_va_list);

int fpva_a1 (__builtin_va_list*);
int fpva_a1 (__builtin_va_list[1]);     // { dg-warning "\\\[-Warray-parameter" }

int fpva_a_ (__builtin_va_list*);
int fpva_a_ (__builtin_va_list[]);
int fpva_a_ (__builtin_va_list*);
int fpva_a_ (__builtin_va_list[]);

/* Also verify that a mismatch between a pointer and a one-element
   array are diagnosed.  This is pervasive in Glibc headers but
   making an exception for it would leave no way to express
   the requirement that a function take at least one argument
   by reference.  */

struct __jmp_buf_tag;
int __sigsetjmp (struct __jmp_buf_tag*, int);

struct __jmp_buf_tag { };
typedef struct __jmp_buf_tag jmp_buf[1];

int __sigsetjmp (struct __jmp_buf_tag[1], int);   // { dg-warning "\\\[-Warray-parameter" }