diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2011-10-16 21:17:32 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2011-10-16 21:17:32 +0000 |
commit | 5aa6ecb619bc7f77c3fa4e6a2978410e20c1eb3a (patch) | |
tree | 7a39886e98bb710650c3d7f6b015b9dd4765279b /clang/test/Sema/static-array.c | |
parent | ef22c60abd2a6290aa42318e575f913dbe66a09d (diff) | |
download | bcm5719-llvm-5aa6ecb619bc7f77c3fa4e6a2978410e20c1eb3a.tar.gz bcm5719-llvm-5aa6ecb619bc7f77c3fa4e6a2978410e20c1eb3a.zip |
Add sema checks for calls to functions taking static array parameters
llvm-svn: 142157
Diffstat (limited to 'clang/test/Sema/static-array.c')
-rw-r--r-- | clang/test/Sema/static-array.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/clang/test/Sema/static-array.c b/clang/test/Sema/static-array.c new file mode 100644 index 00000000000..2d4b968decd --- /dev/null +++ b/clang/test/Sema/static-array.c @@ -0,0 +1,31 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s + +void cat0(int a[static 0]) {} // expected-warning {{'static' has no effect on zero-length arrays}} + +void cat(int a[static 3]) {} // expected-note 2 {{callee declares array parameter as static here}} + +typedef int i3[static 3]; +void tcat(i3 a) {} + +void vat(int i, int a[static i]) {} // expected-note {{callee declares array parameter as static here}} + +void f(int *p) { + int a[2], b[3], c[4]; + + cat0(0); + + cat(0); // expected-warning {{null passed to a callee which requires a non-null argument}} + cat(a); // expected-warning {{array argument is too small; contains 2 elements, callee requires at least 3}} + cat(b); + cat(c); + cat(p); + + tcat(0); // expected-warning {{null passed to a callee which requires a non-null argument}} + tcat(a); // expected-warning {{array argument is too small; contains 2 elements, callee requires at least 3}} + tcat(b); + tcat(c); + tcat(p); + + vat(1, 0); // expected-warning {{null passed to a callee which requires a non-null argument}} + vat(3, b); +} |