summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2012-08-03 23:08:36 +0000
committerJordan Rose <jordan_rose@apple.com>2012-08-03 23:08:36 +0000
commit86bedb0de00508c872dbf9f1b4835efd64bae2fd (patch)
treec131caead6bbb18a099ac2ef1758a1795a51f1fe
parent24bc514c0c74cbc43bb7186d777cedcd050f3394 (diff)
downloadbcm5719-llvm-86bedb0de00508c872dbf9f1b4835efd64bae2fd.tar.gz
bcm5719-llvm-86bedb0de00508c872dbf9f1b4835efd64bae2fd.zip
[analyzer] Add a test for copy-constructor inlining.
llvm-svn: 161274
-rw-r--r--clang/test/Analysis/ctor-inlining.mm32
1 files changed, 31 insertions, 1 deletions
diff --git a/clang/test/Analysis/ctor-inlining.mm b/clang/test/Analysis/ctor-inlining.mm
index 586c09d3048..54d51b46dc5 100644
--- a/clang/test/Analysis/ctor-inlining.mm
+++ b/clang/test/Analysis/ctor-inlining.mm
@@ -1,4 +1,6 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -fobjc-arc -cfg-add-implicit-dtors -Wno-null-dereference -verify %s
+// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -fobjc-arc -cfg-add-implicit-dtors -Wno-null-dereference -verify %s
+
+void clang_analyzer_eval(bool);
struct Wrapper {
__strong id obj;
@@ -9,3 +11,31 @@ void test() {
// force a diagnostic
*(char *)0 = 1; // expected-warning{{Dereference of null pointer}}
}
+
+
+struct IntWrapper {
+ int x;
+};
+
+void testCopyConstructor() {
+ IntWrapper a;
+ a.x = 42;
+
+ IntWrapper b(a);
+ clang_analyzer_eval(b.x == 42); // expected-warning{{TRUE}}
+}
+
+struct NonPODIntWrapper {
+ int x;
+
+ virtual int get();
+};
+
+void testNonPODCopyConstructor() {
+ NonPODIntWrapper a;
+ a.x = 42;
+
+ NonPODIntWrapper b(a);
+ clang_analyzer_eval(b.x == 42); // expected-warning{{TRUE}}
+}
+
OpenPOWER on IntegriCloud