forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| // RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -disable-llvm-passes -o - %s | FileCheck %s
 | |
| // rdar://18249673
 | |
| 
 | |
| @class MyObject;
 | |
| struct base {
 | |
|   ~base() = default;
 | |
| };
 | |
| struct derived : public base {
 | |
|   MyObject *myobject;
 | |
| };
 | |
| 
 | |
| void test1() {
 | |
|   derived d1;
 | |
| }
 | |
| // CHECK-LABEL: define void @_Z5test1v()
 | |
| // CHECK: call void @_ZN7derivedC1Ev
 | |
| // CHECK: call void @_ZN7derivedD1Ev
 | |
| 
 | |
| void test2() {
 | |
|   derived *d2 = new derived;
 | |
|   delete d2;
 | |
| }
 | |
| // CHECK-LABEL: define void @_Z5test2v()
 | |
| // CHECK:   call void @_ZN7derivedC1Ev
 | |
| // CHECK:   call void @_ZN7derivedD1Ev
 | |
| 
 | |
| template <typename T>
 | |
| struct tderived : public base {
 | |
|   MyObject *myobject;
 | |
| };
 | |
| void test3() {
 | |
|   tderived<int> d1;
 | |
| }
 | |
| // CHECK-LABEL: define void @_Z5test3v()
 | |
| // CHECK: call void @_ZN8tderivedIiEC1Ev
 | |
| // CHECK: call void @_ZN8tderivedIiED1Ev
 | |
| 
 | |
| void test4() {
 | |
|   tderived<int> *d2 = new tderived<int>;
 | |
|   delete d2;
 | |
| }
 | |
| // CHECK-LABEL: define void @_Z5test4v()
 | |
| // CHECK: call void @_ZN8tderivedIiEC1Ev
 | |
| // CHECK: call void @_ZN8tderivedIiED1Ev
 | |
| 
 | |
| // CHECK-LABEL: define linkonce_odr void @_ZN7derivedD2Ev
 | |
| // CHECK: call void @llvm.objc.storeStrong(i8** {{.*}}, i8* null)
 | |
| 
 | |
| // CHECK-LABEL: define linkonce_odr void @_ZN8tderivedIiED2Ev
 | |
| // CHECK: call void @llvm.objc.storeStrong(i8** {{.*}}, i8* null)
 |