39 lines
		
	
	
		
			528 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			528 B
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -O2 -o - | FileCheck %s
 | |
| static int count = 0;
 | |
| 
 | |
| struct S {
 | |
|   S() { count++; }
 | |
|   ~S() { count--; }
 | |
| };
 | |
| 
 | |
| struct P {
 | |
|   P() { count++; }
 | |
|   ~P() { count--; }
 | |
| };
 | |
| 
 | |
| struct Q {
 | |
|   Q() { count++; }
 | |
|   ~Q() { count--; }
 | |
| };
 | |
| 
 | |
| struct M : Q, P {
 | |
|   S s;
 | |
|   Q q;
 | |
|   P p;
 | |
|   P p_arr[3];
 | |
|   Q q_arr[2][3];
 | |
| };
 | |
|   
 | |
| // CHECK: define i32 @_Z1fv() [[NUW:#[0-9]+]]
 | |
| int f() {
 | |
|   {
 | |
|     count = 1;
 | |
|     M a;
 | |
|   }
 | |
| 
 | |
|   // CHECK: ret i32 1
 | |
|   return count;
 | |
| }
 | |
| 
 | |
| // CHECK: attributes [[NUW]] = { nounwind{{.*}} }
 |