1*67e74705SXin Li // RUN: %clang_cc1 -emit-llvm -o %t %s 2*67e74705SXin Li // RUN: grep -e "global_ctors.*@A" %t 3*67e74705SXin Li // RUN: grep -e "global_dtors.*@B" %t 4*67e74705SXin Li // RUN: grep -e "global_ctors.*@C" %t 5*67e74705SXin Li // RUN: grep -e "global_dtors.*@D" %t 6*67e74705SXin Li 7*67e74705SXin Li int printf(const char *, ...); 8*67e74705SXin Li 9*67e74705SXin Li void A() __attribute__((constructor)); 10*67e74705SXin Li void B() __attribute__((destructor)); 11*67e74705SXin Li A()12*67e74705SXin Livoid A() { 13*67e74705SXin Li printf("A\n"); 14*67e74705SXin Li } 15*67e74705SXin Li B()16*67e74705SXin Livoid B() { 17*67e74705SXin Li printf("B\n"); 18*67e74705SXin Li } 19*67e74705SXin Li 20*67e74705SXin Li static void C() __attribute__((constructor)); 21*67e74705SXin Li 22*67e74705SXin Li static void D() __attribute__((destructor)); 23*67e74705SXin Li foo()24*67e74705SXin Listatic int foo() { 25*67e74705SXin Li return 10; 26*67e74705SXin Li } 27*67e74705SXin Li C()28*67e74705SXin Listatic void C() { 29*67e74705SXin Li printf("A: %d\n", foo()); 30*67e74705SXin Li } 31*67e74705SXin Li D()32*67e74705SXin Listatic void D() { 33*67e74705SXin Li printf("B\n"); 34*67e74705SXin Li } 35*67e74705SXin Li main()36*67e74705SXin Liint main() { 37*67e74705SXin Li return 0; 38*67e74705SXin Li } 39