1cf739927f9b00c801867f620b04b79e3259c311fNico Weber// RUN: %clang_cc1 -fsyntax-only -verify %s
2cf739927f9b00c801867f620b04b79e3259c311fNico Weber
3cf739927f9b00c801867f620b04b79e3259c311fNico Webertypedef int Arr[10];
4cf739927f9b00c801867f620b04b79e3259c311fNico Weber
5cf739927f9b00c801867f620b04b79e3259c311fNico Webertypedef int trungl_int;
6cf739927f9b00c801867f620b04b79e3259c311fNico Weber
7cf739927f9b00c801867f620b04b79e3259c311fNico Webervoid f(int a[10], Arr arr) {  // \
8cf739927f9b00c801867f620b04b79e3259c311fNico Weber// expected-note {{declared here}} \
9cf739927f9b00c801867f620b04b79e3259c311fNico Weber// expected-note {{declared here}} \
10cf739927f9b00c801867f620b04b79e3259c311fNico Weber// expected-note {{declared here}} \
11cf739927f9b00c801867f620b04b79e3259c311fNico Weber// expected-note {{declared here}}
12cf739927f9b00c801867f620b04b79e3259c311fNico Weber
13cf739927f9b00c801867f620b04b79e3259c311fNico Weber  /* Should warn. */
14cf739927f9b00c801867f620b04b79e3259c311fNico Weber  (void)sizeof(a);  // \
15cf739927f9b00c801867f620b04b79e3259c311fNico Weber      // expected-warning{{sizeof on array function parameter will return size of 'int *' instead of 'int [10]'}}
16cf739927f9b00c801867f620b04b79e3259c311fNico Weber  (void)sizeof((((a))));  // \
17cf739927f9b00c801867f620b04b79e3259c311fNico Weber      // expected-warning{{sizeof on array function parameter will return size of 'int *' instead of 'int [10]'}}
18cf739927f9b00c801867f620b04b79e3259c311fNico Weber  (void)sizeof a;  // \
19cf739927f9b00c801867f620b04b79e3259c311fNico Weber      // expected-warning{{sizeof on array function parameter will return size of 'int *' instead of 'int [10]'}}
20cf739927f9b00c801867f620b04b79e3259c311fNico Weber  (void)sizeof arr;  // \
21cf739927f9b00c801867f620b04b79e3259c311fNico Weber      // expected-warning{{sizeof on array function parameter will return size of 'int *' instead of 'Arr' (aka 'int [10]')}}
22cf739927f9b00c801867f620b04b79e3259c311fNico Weber
23cf739927f9b00c801867f620b04b79e3259c311fNico Weber  /* Shouldn't warn. */
24cf739927f9b00c801867f620b04b79e3259c311fNico Weber  int b[10];
25cf739927f9b00c801867f620b04b79e3259c311fNico Weber  (void)sizeof b;
26cf739927f9b00c801867f620b04b79e3259c311fNico Weber  Arr brr;
27cf739927f9b00c801867f620b04b79e3259c311fNico Weber  (void)sizeof brr;
28cf739927f9b00c801867f620b04b79e3259c311fNico Weber  (void)sizeof(Arr);
29cf739927f9b00c801867f620b04b79e3259c311fNico Weber  (void)sizeof(int);
30cf739927f9b00c801867f620b04b79e3259c311fNico Weber}
31