diff options
author | Hans Wennborg <hans@hanshq.net> | 2012-07-30 17:11:32 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2012-07-30 17:11:32 +0000 |
commit | ebcd1c7ca2e21192dee17985221c7c0efb017506 (patch) | |
tree | d668bcf284ccf52aea6f3652021602f0dd1e16fd /clang/test/Sema/format-strings-scanf.c | |
parent | dfe14f7848d2389c9c02d74b2f8e732832e00ffa (diff) | |
download | bcm5719-llvm-ebcd1c7ca2e21192dee17985221c7c0efb017506.tar.gz bcm5719-llvm-ebcd1c7ca2e21192dee17985221c7c0efb017506.zip |
Make -Wformat check the argument type for %n.
This makes Clang check that the corresponding argument for "%n" in a
format string is a pointer to int.
llvm-svn: 160966
Diffstat (limited to 'clang/test/Sema/format-strings-scanf.c')
-rw-r--r-- | clang/test/Sema/format-strings-scanf.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/test/Sema/format-strings-scanf.c b/clang/test/Sema/format-strings-scanf.c index e94af5acb11..2ce94840a6f 100644 --- a/clang/test/Sema/format-strings-scanf.c +++ b/clang/test/Sema/format-strings-scanf.c @@ -121,3 +121,8 @@ void test_quad(int *x, long long *llx) { scanf("%qd", x); // expected-warning{{format specifies type 'long long *' but the argument has type 'int *'}} scanf("%qd", llx); // no-warning } + +void test_writeback(int *x) { + scanf("%n", (void*)0); // expected-warning{{format specifies type 'int *' but the argument has type 'void *'}} + scanf("%n %c", x, x); // expected-warning{{format specifies type 'char *' but the argument has type 'int *'}} +} |