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