diff options
Diffstat (limited to 'test/Analysis/plist-html-macros.c')
-rw-r--r-- | test/Analysis/plist-html-macros.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/test/Analysis/plist-html-macros.c b/test/Analysis/plist-html-macros.c new file mode 100644 index 000000000000..954aab099725 --- /dev/null +++ b/test/Analysis/plist-html-macros.c @@ -0,0 +1,31 @@ +// REQUIRES: shell +// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s +// (sanity check) + +// RUN: rm -rf %t.dir +// RUN: mkdir -p %t.dir +// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist-html -o %t.dir/index.plist %s +// RUN: ls %t.dir | grep \\.html | count 1 +// RUN: grep \\.html %t.dir/index.plist | count 1 + +// This tests two things: that the two calls to null_deref below are coalesced +// into a single bug by both the plist and HTML diagnostics, and that the plist +// diagnostics have a reference to the HTML diagnostics. (It would be nice to +// check more carefully that the two actually match, but that's hard to write +// in a lit RUN line.) + +#define CALL_FN(a) null_deref(a) + +void null_deref(int *a) { + if (a) + return; + *a = 1; // expected-warning{{null}} +} + +void test1() { + CALL_FN(0); +} + +void test2(int *p) { + CALL_FN(p); +} |