| Daniel Dunbar | 8fbe78f | 2009-12-15 20:14:24 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s | 
| Anders Carlsson | d7432df | 2009-10-12 19:41:04 +0000 | [diff] [blame] | 2 |  | 
|  | 3 | struct A { | 
|  | 4 | virtual void f(); | 
| Anders Carlsson | c53d9e8 | 2011-04-10 18:20:53 +0000 | [diff] [blame] | 5 | virtual void f_const() const; | 
|  | 6 |  | 
| Anders Carlsson | 2a01709 | 2009-10-12 19:51:33 +0000 | [diff] [blame] | 7 | A h(); | 
| Anders Carlsson | d7432df | 2009-10-12 19:41:04 +0000 | [diff] [blame] | 8 | }; | 
|  | 9 |  | 
| Anders Carlsson | 2a01709 | 2009-10-12 19:51:33 +0000 | [diff] [blame] | 10 | A g(); | 
|  | 11 |  | 
| Anders Carlsson | d7432df | 2009-10-12 19:41:04 +0000 | [diff] [blame] | 12 | void f(A a, A *ap, A& ar) { | 
|  | 13 | // This should not be a virtual function call. | 
|  | 14 |  | 
|  | 15 | // CHECK: call void @_ZN1A1fEv(%struct.A* %a) | 
|  | 16 | a.f(); | 
|  | 17 |  | 
|  | 18 | // CHECK: call void % | 
|  | 19 | ap->f(); | 
|  | 20 |  | 
|  | 21 | // CHECK: call void % | 
|  | 22 | ar.f(); | 
| Anders Carlsson | b61301f | 2009-10-12 19:45:47 +0000 | [diff] [blame] | 23 |  | 
|  | 24 | // CHECK: call void @_ZN1A1fEv | 
|  | 25 | A().f(); | 
| Anders Carlsson | 2a01709 | 2009-10-12 19:51:33 +0000 | [diff] [blame] | 26 |  | 
|  | 27 | // CHECK: call void @_ZN1A1fEv | 
|  | 28 | g().f(); | 
|  | 29 |  | 
|  | 30 | // CHECK: call void @_ZN1A1fEv | 
|  | 31 | a.h().f(); | 
| Anders Carlsson | c53d9e8 | 2011-04-10 18:20:53 +0000 | [diff] [blame] | 32 |  | 
|  | 33 | // CHECK: call void @_ZNK1A7f_constEv | 
|  | 34 | a.f_const(); | 
|  | 35 |  | 
|  | 36 | // CHECK: call void @_ZN1A1fEv | 
|  | 37 | (a).f(); | 
| Anders Carlsson | d7432df | 2009-10-12 19:41:04 +0000 | [diff] [blame] | 38 | } | 
| Anders Carlsson | a1b54fd | 2009-10-12 19:59:15 +0000 | [diff] [blame] | 39 |  | 
|  | 40 | struct B { | 
|  | 41 | virtual void f(); | 
|  | 42 | ~B(); | 
|  | 43 |  | 
|  | 44 | B h(); | 
|  | 45 | }; | 
|  | 46 |  | 
|  | 47 |  | 
|  | 48 | void f() { | 
|  | 49 | // CHECK: call void @_ZN1B1fEv | 
|  | 50 | B().f(); | 
|  | 51 |  | 
|  | 52 | // CHECK: call void @_ZN1B1fEv | 
|  | 53 | B().h().f(); | 
|  | 54 | } | 
| Anders Carlsson | c53d9e8 | 2011-04-10 18:20:53 +0000 | [diff] [blame] | 55 |  |