From: Jordan Rose Date: Fri, 3 Aug 2012 23:08:36 +0000 (+0000) Subject: [analyzer] Add a test for copy-constructor inlining. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bf83e7cd7eaa1257ae8c2317b812fee17adcf919;p=clang [analyzer] Add a test for copy-constructor inlining. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161274 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/Analysis/ctor-inlining.mm b/test/Analysis/ctor-inlining.mm index 586c09d304..54d51b46dc 100644 --- a/test/Analysis/ctor-inlining.mm +++ b/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}} +} +