diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/Analysis/iterators.cpp | 3 | ||||
-rw-r--r-- | test/Analysis/misc-ps-region-store.cpp | 20 |
2 files changed, 23 insertions, 0 deletions
diff --git a/test/Analysis/iterators.cpp b/test/Analysis/iterators.cpp index 1b6340b2af..9d7ef32e91 100644 --- a/test/Analysis/iterators.cpp +++ b/test/Analysis/iterators.cpp @@ -1,6 +1,9 @@ // RUN: %clang --analyze -Xclang -analyzer-checker=core,experimental.cplusplus.Iterators -Xclang -verify %s // XFAIL: win32 +// FIXME: Does not work with inlined C++ methods. +// XFAIL: * + #include <vector> void fum(std::vector<int>::iterator t); diff --git a/test/Analysis/misc-ps-region-store.cpp b/test/Analysis/misc-ps-region-store.cpp index 893e2983ca..381aa03316 100644 --- a/test/Analysis/misc-ps-region-store.cpp +++ b/test/Analysis/misc-ps-region-store.cpp @@ -592,3 +592,23 @@ void rdar11401827() { } } +//===---------------------------------------------------------------------===// +// Handle inlining of C++ method calls. +//===---------------------------------------------------------------------===// + +struct A { + int *p; + void foo(int *q) { + p = q; + } + void bar() { + *p = 0; // expected-warning {{null pointer}} + } +}; + +void test_inline() { + A a; + a.foo(0); + a.bar(); +} + |