temporaries.cpp revision 2d46eb21eb2c904831b0e9f75ab3523384c70e66
17a039eb88d03b35311cb2c99f84eb76634f37a71Anders Carlsson// RUN: clang-cc -emit-llvm %s -o %t -triple=x86_64-apple-darwin9 &&
27a039eb88d03b35311cb2c99f84eb76634f37a71Anders Carlssonstruct A {
37a039eb88d03b35311cb2c99f84eb76634f37a71Anders Carlsson  A();
47a039eb88d03b35311cb2c99f84eb76634f37a71Anders Carlsson  ~A();
57a039eb88d03b35311cb2c99f84eb76634f37a71Anders Carlsson  void f();
67a039eb88d03b35311cb2c99f84eb76634f37a71Anders Carlsson};
77a039eb88d03b35311cb2c99f84eb76634f37a71Anders Carlsson
8ec74c5929c78bd1670619022f6cfd471becf65aaAnders Carlsson// RUN: grep "call void @_ZN1AC1Ev" %t | count 2 &&
9ec74c5929c78bd1670619022f6cfd471becf65aaAnders Carlsson// RUN: grep "call void @_ZN1AD1Ev" %t | count 2 &&
10ec74c5929c78bd1670619022f6cfd471becf65aaAnders Carlssonvoid f1() {
11ec74c5929c78bd1670619022f6cfd471becf65aaAnders Carlsson  (void)A();
127a039eb88d03b35311cb2c99f84eb76634f37a71Anders Carlsson  A().f();
137a039eb88d03b35311cb2c99f84eb76634f37a71Anders Carlsson}
14ec74c5929c78bd1670619022f6cfd471becf65aaAnders Carlsson
156f68027af2b6ce294a2706f23a1d3cb7ca1b8d37Anders Carlsson// Function calls
16ec74c5929c78bd1670619022f6cfd471becf65aaAnders Carlssonstruct B {
17ec74c5929c78bd1670619022f6cfd471becf65aaAnders Carlsson  B();
18ec74c5929c78bd1670619022f6cfd471becf65aaAnders Carlsson  ~B();
19ec74c5929c78bd1670619022f6cfd471becf65aaAnders Carlsson};
20ec74c5929c78bd1670619022f6cfd471becf65aaAnders Carlsson
21ec74c5929c78bd1670619022f6cfd471becf65aaAnders CarlssonB g();
22ec74c5929c78bd1670619022f6cfd471becf65aaAnders Carlsson
23ec74c5929c78bd1670619022f6cfd471becf65aaAnders Carlsson// RUN: grep "call void @_ZN1BC1Ev" %t | count 0 &&
246f68027af2b6ce294a2706f23a1d3cb7ca1b8d37Anders Carlsson// RUN: grep "call void @_ZN1BD1Ev" %t | count 1 &&
25ec74c5929c78bd1670619022f6cfd471becf65aaAnders Carlssonvoid f2() {
26ec74c5929c78bd1670619022f6cfd471becf65aaAnders Carlsson  (void)g();
27ec74c5929c78bd1670619022f6cfd471becf65aaAnders Carlsson}
28ec74c5929c78bd1670619022f6cfd471becf65aaAnders Carlsson
296f68027af2b6ce294a2706f23a1d3cb7ca1b8d37Anders Carlsson// Member function calls
306f68027af2b6ce294a2706f23a1d3cb7ca1b8d37Anders Carlssonstruct C {
316f68027af2b6ce294a2706f23a1d3cb7ca1b8d37Anders Carlsson  C();
326f68027af2b6ce294a2706f23a1d3cb7ca1b8d37Anders Carlsson  ~C();
336f68027af2b6ce294a2706f23a1d3cb7ca1b8d37Anders Carlsson
346f68027af2b6ce294a2706f23a1d3cb7ca1b8d37Anders Carlsson  C f();
356f68027af2b6ce294a2706f23a1d3cb7ca1b8d37Anders Carlsson};
366f68027af2b6ce294a2706f23a1d3cb7ca1b8d37Anders Carlsson
376f68027af2b6ce294a2706f23a1d3cb7ca1b8d37Anders Carlsson// RUN: grep "call void @_ZN1CC1Ev" %t | count 1 &&
38a303f9eab9ceb356a24d84e178d079f0d41ad8d4Anders Carlsson// RUN: grep "call void @_ZN1CD1Ev" %t | count 2 &&
396f68027af2b6ce294a2706f23a1d3cb7ca1b8d37Anders Carlssonvoid f3() {
406f68027af2b6ce294a2706f23a1d3cb7ca1b8d37Anders Carlsson  C().f();
416f68027af2b6ce294a2706f23a1d3cb7ca1b8d37Anders Carlsson}
426f68027af2b6ce294a2706f23a1d3cb7ca1b8d37Anders Carlsson
43a303f9eab9ceb356a24d84e178d079f0d41ad8d4Anders Carlsson// Function call operator
44a303f9eab9ceb356a24d84e178d079f0d41ad8d4Anders Carlssonstruct D {
45a303f9eab9ceb356a24d84e178d079f0d41ad8d4Anders Carlsson  D();
46a303f9eab9ceb356a24d84e178d079f0d41ad8d4Anders Carlsson  ~D();
47a303f9eab9ceb356a24d84e178d079f0d41ad8d4Anders Carlsson
48a303f9eab9ceb356a24d84e178d079f0d41ad8d4Anders Carlsson  D operator()();
49a303f9eab9ceb356a24d84e178d079f0d41ad8d4Anders Carlsson};
50a303f9eab9ceb356a24d84e178d079f0d41ad8d4Anders Carlsson
51a303f9eab9ceb356a24d84e178d079f0d41ad8d4Anders Carlsson// RUN: grep "call void @_ZN1DC1Ev" %t | count 1 &&
522d46eb21eb2c904831b0e9f75ab3523384c70e66Anders Carlsson// RUN: grep "call void @_ZN1DD1Ev" %t | count 2 &&
53a303f9eab9ceb356a24d84e178d079f0d41ad8d4Anders Carlssonvoid f4() {
54a303f9eab9ceb356a24d84e178d079f0d41ad8d4Anders Carlsson  D()();
55a303f9eab9ceb356a24d84e178d079f0d41ad8d4Anders Carlsson}
566f68027af2b6ce294a2706f23a1d3cb7ca1b8d37Anders Carlsson
572d46eb21eb2c904831b0e9f75ab3523384c70e66Anders Carlsson// Overloaded operators
582d46eb21eb2c904831b0e9f75ab3523384c70e66Anders Carlssonstruct E {
592d46eb21eb2c904831b0e9f75ab3523384c70e66Anders Carlsson  E();
602d46eb21eb2c904831b0e9f75ab3523384c70e66Anders Carlsson  ~E();
612d46eb21eb2c904831b0e9f75ab3523384c70e66Anders Carlsson  E operator+(const E&);
622d46eb21eb2c904831b0e9f75ab3523384c70e66Anders Carlsson  E operator!();
632d46eb21eb2c904831b0e9f75ab3523384c70e66Anders Carlsson};
642d46eb21eb2c904831b0e9f75ab3523384c70e66Anders Carlsson
652d46eb21eb2c904831b0e9f75ab3523384c70e66Anders Carlsson// RUN: grep "call void @_ZN1EC1Ev" %t | count 3 &&
662d46eb21eb2c904831b0e9f75ab3523384c70e66Anders Carlsson// RUN: grep "call void @_ZN1ED1Ev" %t | count 5
672d46eb21eb2c904831b0e9f75ab3523384c70e66Anders Carlssonvoid f5() {
682d46eb21eb2c904831b0e9f75ab3523384c70e66Anders Carlsson  E() + E();
692d46eb21eb2c904831b0e9f75ab3523384c70e66Anders Carlsson  !E();
702d46eb21eb2c904831b0e9f75ab3523384c70e66Anders Carlsson}
716f68027af2b6ce294a2706f23a1d3cb7ca1b8d37Anders Carlsson
72