blob: 91da532456d7c8c6c4f5a2139a4a7ab1342a7c0a [file] [log] [blame]
Jordy Rose43d9f0d2012-05-16 16:01:10 +00001// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-ipa=inlining -analyzer-store region -verify %s
Argyrios Kyrtzidisb76fdf62011-02-19 01:08:37 +00002// XFAIL: *
Zhongxing Xu7ce351d2010-11-01 09:09:44 +00003
Jordy Rose43d9f0d2012-05-16 16:01:10 +00004void clang_analyzer_eval(bool);
5
Zhongxing Xu40ab43b2010-04-20 05:48:57 +00006struct A {
7 int x;
8 A(int a) { x = a; }
Zhongxing Xu32303022010-11-24 13:48:50 +00009 int getx() const { return x; }
Zhongxing Xu40ab43b2010-04-20 05:48:57 +000010};
11
12void f1() {
13 A x(3);
Jordy Rose43d9f0d2012-05-16 16:01:10 +000014 clang_analyzer_eval(x.getx() == 3); // expected-warning{{TRUE}}
Zhongxing Xu40ab43b2010-04-20 05:48:57 +000015}
16
Zhongxing Xu0e38d5d2010-11-25 03:18:57 +000017void f2() {
18 const A &x = A(3);
Jordy Rose43d9f0d2012-05-16 16:01:10 +000019 clang_analyzer_eval(x.getx() == 3); // expected-warning{{TRUE}}
Zhongxing Xu0e38d5d2010-11-25 03:18:57 +000020}
21
Argyrios Kyrtzidisb76fdf62011-02-19 01:08:37 +000022void f3() {
23 const A &x = (A)3;
Jordy Rose43d9f0d2012-05-16 16:01:10 +000024 clang_analyzer_eval(x.getx() == 3); // expected-warning{{TRUE}}
Argyrios Kyrtzidisb76fdf62011-02-19 01:08:37 +000025}