39 lines
		
	
	
		
			606 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			606 B
		
	
	
	
		
			C
		
	
	
	
| // RUN: %clang_cc1 -emit-llvm -o %t %s
 | |
| // RUN: grep -e "global_ctors.*@A" %t
 | |
| // RUN: grep -e "global_dtors.*@B" %t
 | |
| // RUN: grep -e "global_ctors.*@C" %t
 | |
| // RUN: grep -e "global_dtors.*@D" %t
 | |
| 
 | |
| int printf(const char *, ...);
 | |
| 
 | |
| void A() __attribute__((constructor));
 | |
| void B() __attribute__((destructor));
 | |
| 
 | |
| void A() {
 | |
|   printf("A\n");
 | |
| }
 | |
| 
 | |
| void B() {
 | |
|   printf("B\n");
 | |
| }
 | |
| 
 | |
| static void C() __attribute__((constructor));
 | |
| 
 | |
| static void D() __attribute__((destructor));
 | |
| 
 | |
| static int foo() {
 | |
|   return 10;
 | |
| }
 | |
| 
 | |
| static void C() {
 | |
|   printf("A: %d\n", foo());
 | |
| }
 | |
| 
 | |
| static void D() {
 | |
|   printf("B\n");
 | |
| }
 | |
| 
 | |
| int main() {
 | |
|   return 0;
 | |
| }
 |