forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			42 lines
		
	
	
		
			623 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			623 B
		
	
	
	
		
			C++
		
	
	
	
// RUN: %clang_cc1 %s -emit-llvm -o %t
 | 
						|
 | 
						|
extern "C" int printf(...);
 | 
						|
 | 
						|
static int val;
 | 
						|
 | 
						|
struct B {
 | 
						|
  B() : iB(++val) { printf("B()\n"); }
 | 
						|
  int iB;
 | 
						|
  ~B() { printf("~B(%d)\n", iB); --val; }
 | 
						|
};
 | 
						|
 | 
						|
struct M : B {
 | 
						|
  M() : iM(++val) { printf("M()\n"); }
 | 
						|
  int iM;
 | 
						|
  ~M() { printf("~M(%d)\n", iM); --val; }
 | 
						|
};
 | 
						|
 | 
						|
struct P {
 | 
						|
  P() : iP(++val) { printf("P()\n"); }
 | 
						|
  int iP;
 | 
						|
  ~P() { printf("~P(%d)\n", iP); --val; }
 | 
						|
};
 | 
						|
 | 
						|
struct N : M, P {
 | 
						|
  N() { printf("N()\n"); iN = ++val; }
 | 
						|
  ~N() { printf("~N(%d) val = %d\n", iN, --val);  }
 | 
						|
  int iN;
 | 
						|
  M m;
 | 
						|
  P p;
 | 
						|
};
 | 
						|
 | 
						|
struct O : B { 
 | 
						|
  ~O() { return; } 
 | 
						|
};
 | 
						|
 | 
						|
int main() {
 | 
						|
  N n1;
 | 
						|
  N n2;
 | 
						|
  O o;
 | 
						|
}
 |