xref: /llvm-project/clang/test/Sema/array-parameter.c (revision cc5b77273af3705b6f5cf574567b49d5158bb3a9)
1*cc5b7727Sserge-sans-paille // RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -fsyntax-only -Warray-parameter -verify %s
2*cc5b7727Sserge-sans-paille void f0(int a[]);
3*cc5b7727Sserge-sans-paille void f0(int *a); // no warning
4*cc5b7727Sserge-sans-paille 
5*cc5b7727Sserge-sans-paille void f1(int a[]);  // expected-note {{previously declared as 'int[]' here}}
6*cc5b7727Sserge-sans-paille void f1(int a[2]); // expected-warning {{argument 'a' of type 'int[2]' with mismatched bound}}
7*cc5b7727Sserge-sans-paille 
8*cc5b7727Sserge-sans-paille void f2(int a[3]); // expected-note {{previously declared as 'int[3]' here}}
9*cc5b7727Sserge-sans-paille void f2(int a[2]); // expected-warning {{argument 'a' of type 'int[2]' with mismatched bound}}
10*cc5b7727Sserge-sans-paille 
11*cc5b7727Sserge-sans-paille void f3(int a[const 2]);
12*cc5b7727Sserge-sans-paille void f3(int a[2]); // no warning
13*cc5b7727Sserge-sans-paille 
14*cc5b7727Sserge-sans-paille void f4(int a[static 2]);
15*cc5b7727Sserge-sans-paille void f4(int a[2]); // no warning
16*cc5b7727Sserge-sans-paille 
17*cc5b7727Sserge-sans-paille void f5(int a[restrict 2]);
18*cc5b7727Sserge-sans-paille void f5(int a[2]); // no warning
19*cc5b7727Sserge-sans-paille 
20*cc5b7727Sserge-sans-paille void f6(int a[volatile 2]);
21*cc5b7727Sserge-sans-paille void f6(int a[2]); // no warning
22*cc5b7727Sserge-sans-paille 
23*cc5b7727Sserge-sans-paille void f7(int a[*]);
24*cc5b7727Sserge-sans-paille void f7(int a[]); // no warning
25*cc5b7727Sserge-sans-paille 
26*cc5b7727Sserge-sans-paille void f8(int n, int a[*]); // expected-note {{previously declared as 'int[*]' here}}
27*cc5b7727Sserge-sans-paille void f8(int n, int a[n]); // expected-warning {{argument 'a' of type 'int[n]' with mismatched bound}}
28*cc5b7727Sserge-sans-paille 
29*cc5b7727Sserge-sans-paille void f9(int *a);
30*cc5b7727Sserge-sans-paille void f9(int a[2]);
31*cc5b7727Sserge-sans-paille void f9(int a[]); // expected-warning {{argument 'a' of type 'int[]' with mismatched bound}}
32*cc5b7727Sserge-sans-paille                   // expected-note@-2 {{previously declared as 'int[2]' here}}
f9(int a[2])33*cc5b7727Sserge-sans-paille void f9(int a[2]) // expected-warning {{argument 'a' of type 'int[2]' with mismatched bound}}
34*cc5b7727Sserge-sans-paille                   // expected-note@-3 {{previously declared as 'int[]' here}}
35*cc5b7727Sserge-sans-paille {}
36