aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2012-06-22 23:55:50 +0000
committerTed Kremenek <kremenek@apple.com>2012-06-22 23:55:50 +0000
commit10f77ad7fc5e5cf3f37a9b14ff5843468b8b84d2 (patch)
tree70d4950719bc055639f30d99828c8aee603888c1 /test
parentc1fb54265614845ee1e09856af6e46961c6209f4 (diff)
Implement initial static analysis inlining support for C++ methods.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159047 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/Analysis/iterators.cpp3
-rw-r--r--test/Analysis/misc-ps-region-store.cpp20
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();
+}
+