Home | History | Annotate | Download | only in GlobalOpt
      1 ; RUN: opt < %s -globalopt -S | FileCheck %s
      2 
      3 %0 = type { i32, void ()* }
      4 %struct.A = type { i8 }
      5 
      6 @a = global %struct.A zeroinitializer, align 1
      7 @__dso_handle = external global i8*
      8 @llvm.global_ctors = appending global [1 x %0] [%0 { i32 65535, void ()* @_GLOBAL__I_a }]
      9 
     10 ; CHECK-NOT: call i32 @__cxa_atexit
     11 
     12 define internal void @__cxx_global_var_init() nounwind section "__TEXT,__StaticInit,regular,pure_instructions" {
     13   %1 = call i32 @__cxa_atexit(void (i8*)* bitcast (void (%struct.A*)* @_ZN1AD1Ev to void (i8*)*), i8* getelementptr inbounds (%struct.A* @a, i32 0, i32 0), i8* bitcast (i8** @__dso_handle to i8*))
     14   ret void
     15 }
     16 
     17 define linkonce_odr void @_ZN1AD1Ev(%struct.A* %this) nounwind align 2 {
     18   call void @_ZN1AD2Ev(%struct.A* %this)
     19   ret void
     20 }
     21 
     22 declare i32 @__cxa_atexit(void (i8*)*, i8*, i8*)
     23 
     24 define linkonce_odr void @_ZN1AD2Ev(%struct.A* %this) nounwind align 2 {
     25   ret void
     26 }
     27 
     28 define internal void @_GLOBAL__I_a() nounwind section "__TEXT,__StaticInit,regular,pure_instructions" {
     29   call void @__cxx_global_var_init()
     30   ret void
     31 }
     32