blob: e9e684ea5a0b5cda74ab6b3d2420593e2d6758cf [file] [log] [blame]
Anders Carlsson5bb0ddd2010-02-04 17:06:52 +00001// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin9 -O3 | FileCheck %s
Anders Carlssona36bf8f2009-11-20 17:27:56 +00002
Anders Carlsson5bb0ddd2010-02-04 17:06:52 +00003namespace {
4
5static int counter;
6
7struct A {
8 A() : i(0) { counter++; }
9 ~A() { counter--; }
Anders Carlssona36bf8f2009-11-20 17:27:56 +000010 int i;
Anders Carlssona36bf8f2009-11-20 17:27:56 +000011};
12
Anders Carlsson5bb0ddd2010-02-04 17:06:52 +000013void g(int) { }
Anders Carlssona36bf8f2009-11-20 17:27:56 +000014
Anders Carlsson5bb0ddd2010-02-04 17:06:52 +000015void f1(bool b) {
16 g(b ? A().i : 0);
17 g(b || A().i);
18 g(b && A().i);
19}
Anders Carlssona36bf8f2009-11-20 17:27:56 +000020
Anders Carlsson5bb0ddd2010-02-04 17:06:52 +000021struct Checker {
22 Checker() {
23 f1(true);
24 f1(false);
25 }
26};
Anders Carlssona36bf8f2009-11-20 17:27:56 +000027
Anders Carlsson5bb0ddd2010-02-04 17:06:52 +000028Checker c;
Anders Carlssona36bf8f2009-11-20 17:27:56 +000029
Anders Carlsson5bb0ddd2010-02-04 17:06:52 +000030}
31
32// CHECK: define i32 @_Z10getCounterv()
33int getCounter() {
34 // CHECK: ret i32 0
35 return counter;
Anders Carlssona36bf8f2009-11-20 17:27:56 +000036}