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