inline-defensive-checks.cpp revision 0415998dd77986630efe8f1aed633519cc41e1f3
10415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s
20415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks// expected-no-diagnostics
30415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks
40415998dd77986630efe8f1aed633519cc41e1f3Anna Zaksclass ButterFly {
50415998dd77986630efe8f1aed633519cc41e1f3Anna Zaksprivate:
60415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks  ButterFly() { }
70415998dd77986630efe8f1aed633519cc41e1f3Anna Zakspublic:
80415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks	int triggerderef() {
90415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks		return 0;
100415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks	}
110415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks};
120415998dd77986630efe8f1aed633519cc41e1f3Anna ZaksButterFly *getInP();
130415998dd77986630efe8f1aed633519cc41e1f3Anna Zaksclass X{
140415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks	ButterFly *p;
150415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks	void setP(ButterFly *inP) {
160415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks		if(inP)
170415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks      ;
180415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks		p = inP;
190415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks	};
200415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks	void subtest1() {
210415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks		ButterFly *inP = getInP();
220415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks		setP(inP);
230415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks	}
240415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks	int subtest2() {
250415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks		int c = p->triggerderef(); // no-warning
260415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks		return c;
270415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks	}
280415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks	int test() {
290415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks		subtest1();
300415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks		return subtest2();
310415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks	}
320415998dd77986630efe8f1aed633519cc41e1f3Anna Zaks};