aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
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();
+}
+