Fix the clang-wpa example.
[clang.git] / test / CodeGenCXX / conditional-temporaries.cpp
blobd5382872f9d93d650fe6085fc0671d95fdb872f7
1 // RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin9 -O3 | FileCheck %s
3 namespace {
5 static int ctorcalls;
6 static int dtorcalls;
8 struct A {
9 A() : i(0) { ctorcalls++; }
10 ~A() { dtorcalls++; }
11 int i;
13 friend const A& operator<<(const A& a, int n) {
14 return a;
18 void g(int) { }
19 void g(const A&) { }
21 void f1(bool b) {
22 g(b ? A().i : 0);
23 g(b || A().i);
24 g(b && A().i);
25 g(b ? A() << 1 : A() << 2);
28 struct Checker {
29 Checker() {
30 f1(true);
31 f1(false);
35 Checker c;
39 // CHECK: define i32 @_Z12getCtorCallsv()
40 int getCtorCalls() {
41 // CHECK: ret i32 5
42 return ctorcalls;
45 // CHECK: define i32 @_Z12getDtorCallsv()
46 int getDtorCalls() {
47 // CHECK: ret i32 5
48 return dtorcalls;
51 // CHECK: define zeroext i1 @_Z7successv()
52 bool success() {
53 // CHECK: ret i1 true
54 return ctorcalls == dtorcalls;