Anders Carlsson | 7a039eb | 2009-08-15 22:30:50 +0000 | [diff] [blame] | 1 | // RUN: clang-cc -emit-llvm %s -o %t -triple=x86_64-apple-darwin9 && |
| 2 | struct A { |
| 3 | A(); |
| 4 | ~A(); |
| 5 | void f(); |
| 6 | }; |
| 7 | |
Anders Carlsson | ec74c59 | 2009-08-16 03:06:32 +0000 | [diff] [blame] | 8 | // RUN: grep "call void @_ZN1AC1Ev" %t | count 2 && |
| 9 | // RUN: grep "call void @_ZN1AD1Ev" %t | count 2 && |
| 10 | void f1() { |
| 11 | (void)A(); |
Anders Carlsson | 7a039eb | 2009-08-15 22:30:50 +0000 | [diff] [blame] | 12 | A().f(); |
| 13 | } |
Anders Carlsson | ec74c59 | 2009-08-16 03:06:32 +0000 | [diff] [blame] | 14 | |
Anders Carlsson | 6f68027 | 2009-08-16 03:42:12 +0000 | [diff] [blame] | 15 | // Function calls |
Anders Carlsson | ec74c59 | 2009-08-16 03:06:32 +0000 | [diff] [blame] | 16 | struct B { |
| 17 | B(); |
| 18 | ~B(); |
| 19 | }; |
| 20 | |
| 21 | B g(); |
| 22 | |
| 23 | // RUN: grep "call void @_ZN1BC1Ev" %t | count 0 && |
Anders Carlsson | 6f68027 | 2009-08-16 03:42:12 +0000 | [diff] [blame] | 24 | // RUN: grep "call void @_ZN1BD1Ev" %t | count 1 && |
Anders Carlsson | ec74c59 | 2009-08-16 03:06:32 +0000 | [diff] [blame] | 25 | void f2() { |
| 26 | (void)g(); |
| 27 | } |
| 28 | |
Anders Carlsson | 6f68027 | 2009-08-16 03:42:12 +0000 | [diff] [blame] | 29 | // Member function calls |
| 30 | struct C { |
| 31 | C(); |
| 32 | ~C(); |
| 33 | |
| 34 | C f(); |
| 35 | }; |
| 36 | |
| 37 | // RUN: grep "call void @_ZN1CC1Ev" %t | count 1 && |
Anders Carlsson | a303f9e | 2009-08-16 03:53:54 +0000 | [diff] [blame] | 38 | // RUN: grep "call void @_ZN1CD1Ev" %t | count 2 && |
Anders Carlsson | 6f68027 | 2009-08-16 03:42:12 +0000 | [diff] [blame] | 39 | void f3() { |
| 40 | C().f(); |
| 41 | } |
| 42 | |
Anders Carlsson | a303f9e | 2009-08-16 03:53:54 +0000 | [diff] [blame] | 43 | // Function call operator |
| 44 | struct D { |
| 45 | D(); |
| 46 | ~D(); |
| 47 | |
| 48 | D operator()(); |
| 49 | }; |
| 50 | |
| 51 | // RUN: grep "call void @_ZN1DC1Ev" %t | count 1 && |
Anders Carlsson | 2d46eb2 | 2009-08-16 04:11:06 +0000 | [diff] [blame^] | 52 | // RUN: grep "call void @_ZN1DD1Ev" %t | count 2 && |
Anders Carlsson | a303f9e | 2009-08-16 03:53:54 +0000 | [diff] [blame] | 53 | void f4() { |
| 54 | D()(); |
| 55 | } |
Anders Carlsson | 6f68027 | 2009-08-16 03:42:12 +0000 | [diff] [blame] | 56 | |
Anders Carlsson | 2d46eb2 | 2009-08-16 04:11:06 +0000 | [diff] [blame^] | 57 | // Overloaded operators |
| 58 | struct E { |
| 59 | E(); |
| 60 | ~E(); |
| 61 | E operator+(const E&); |
| 62 | E operator!(); |
| 63 | }; |
| 64 | |
| 65 | // RUN: grep "call void @_ZN1EC1Ev" %t | count 3 && |
| 66 | // RUN: grep "call void @_ZN1ED1Ev" %t | count 5 |
| 67 | void f5() { |
| 68 | E() + E(); |
| 69 | !E(); |
| 70 | } |
Anders Carlsson | 6f68027 | 2009-08-16 03:42:12 +0000 | [diff] [blame] | 71 | |