1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s --enable-shrink-wrap=false -mtriple=powerpc64le-unknown-linux-gnu | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker%struct.S = type { i8 } 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker@sg = internal thread_local global %struct.S zeroinitializer, align 1 5*9880d681SAndroid Build Coastguard Worker@__dso_handle = external global i8 6*9880d681SAndroid Build Coastguard Worker@__tls_guard = internal thread_local unnamed_addr global i1 false 7*9880d681SAndroid Build Coastguard Worker@sum1 = internal thread_local global i32 0, align 4 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workerdeclare void @_ZN1SC1Ev(%struct.S*) 10*9880d681SAndroid Build Coastguard Workerdeclare void @_ZN1SD1Ev(%struct.S*) 11*9880d681SAndroid Build Coastguard Workerdeclare i32 @_tlv_atexit(void (i8*)*, i8*, i8*) 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: _ZTW2sg 14*9880d681SAndroid Build Coastguard Workerdefine cxx_fast_tlscc nonnull %struct.S* @_ZTW2sg() nounwind { 15*9880d681SAndroid Build Coastguard Worker %.b.i = load i1, i1* @__tls_guard, align 1 16*9880d681SAndroid Build Coastguard Worker; CHECK: bc 12, 1, [[BB_end:.?LBB0_[0-9]+]] 17*9880d681SAndroid Build Coastguard Worker br i1 %.b.i, label %__tls_init.exit, label %init.i 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerinit.i: 20*9880d681SAndroid Build Coastguard Worker; CHECK: Folded Spill 21*9880d681SAndroid Build Coastguard Worker store i1 true, i1* @__tls_guard, align 1 22*9880d681SAndroid Build Coastguard Worker tail call void @_ZN1SC1Ev(%struct.S* nonnull @sg) #2 23*9880d681SAndroid Build Coastguard Worker; CHECK: bl _ZN1SC1Ev 24*9880d681SAndroid Build Coastguard Worker %1 = tail call i32 @_tlv_atexit(void (i8*)* nonnull bitcast (void (%struct.S*)* @_ZN1SD1Ev to void (i8*)*), i8* nonnull getelementptr inbounds (%struct.S, %struct.S* @sg, i64 0, i32 0), i8* nonnull @__dso_handle) #2 25*9880d681SAndroid Build Coastguard Worker; CHECK: Folded Reload 26*9880d681SAndroid Build Coastguard Worker; CHECK: _tlv_atexit 27*9880d681SAndroid Build Coastguard Worker br label %__tls_init.exit 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker; CHECK: [[BB_end]]: 30*9880d681SAndroid Build Coastguard Worker__tls_init.exit: 31*9880d681SAndroid Build Coastguard Worker ret %struct.S* @sg 32*9880d681SAndroid Build Coastguard Worker} 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: _ZTW4sum1 35*9880d681SAndroid Build Coastguard Workerdefine cxx_fast_tlscc nonnull i32* @_ZTW4sum1() nounwind { 36*9880d681SAndroid Build Coastguard Worker ret i32* @sum1 37*9880d681SAndroid Build Coastguard Worker} 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Workerdefine cxx_fast_tlscc i32* @_ZTW4sum2() #0 { 40*9880d681SAndroid Build Coastguard Worker ret i32* @sum1 41*9880d681SAndroid Build Coastguard Worker} 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind "no-frame-pointer-elim"="true" }