62 lines
		
	
	
		
			864 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			864 B
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -emit-llvm %s -o - | \
 | |
| // RUN: FileCheck %s
 | |
| // RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -emit-llvm %s -o - | \
 | |
| // RUN: FileCheck %s
 | |
| 
 | |
| extern "C" int printf(...);
 | |
| 
 | |
| int count;
 | |
| 
 | |
| struct S {
 | |
|   S() : iS (++count) { printf("S::S(%d)\n", iS); }
 | |
|   ~S() { printf("S::~S(%d)\n", iS); }
 | |
|   int iS;
 | |
| };
 | |
| 
 | |
| struct V {
 | |
|   V() : iV (++count) { printf("V::V(%d)\n", iV); }
 | |
|   virtual ~V() { printf("V::~V(%d)\n", iV); }
 | |
|   int iV;
 | |
| };
 | |
| 
 | |
| struct COST
 | |
| {
 | |
|   S *cost;
 | |
|   V *vcost;
 | |
|   unsigned *cost_val;
 | |
| 
 | |
|   ~COST();
 | |
|   COST();
 | |
| };
 | |
| 
 | |
| 
 | |
| COST::COST()
 | |
| {
 | |
|   cost = new S[3];
 | |
|   vcost = new V[4];
 | |
|   cost_val = new unsigned[10];
 | |
| }
 | |
| 
 | |
| COST::~COST()
 | |
| {
 | |
|   if (cost) {
 | |
|    delete [] cost;
 | |
|   }
 | |
|   if (vcost) {
 | |
|    delete [] vcost;
 | |
|   }
 | |
|   if (cost_val)
 | |
|     delete [] cost_val;
 | |
| }
 | |
| 
 | |
| COST c1;
 | |
| 
 | |
| int main()
 | |
| {
 | |
|   COST c3;
 | |
| }
 | |
| COST c2;
 | |
| 
 | |
| // CHECK: call void @_ZdaPv
 | |
| 
 |