1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=thumbv7-linux-gnueabihf -relocation-model=pic %s -o - | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker@var = thread_local global i32 0, align 4 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine void @func(i32 %n) { 6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: func: 7*9880d681SAndroid Build Coastguard Worker; CHECK: ldr [[REF1:r[0-9]+]], [[CP1:.LCPI[0-9]+_[0-9]+]] 8*9880d681SAndroid Build Coastguard Worker; CHECK: ldr [[REF2:r[0-9]+]], [[CP2:.LCPI[0-9]+_[0-9]+]] 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker; CHECK: [[PCPOS1:.LPC[0-9]+_[0-9]+]]: 11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: add [[REF1]], pc 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker; CHECK: [[PCPOS2:.LPC[0-9]+_[0-9]+]]: 14*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: add [[REF2]], pc 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker; CHECK: [[CP1]]: 17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: [[CP1_TMP:.Ltmp[0-9]+]]: 18*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long var(TLSGD)-(([[PCPOS1]]+4)-[[CP1_TMP]]) 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker; CHECK: [[CP2]]: 21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: [[CP2_TMP:.Ltmp[0-9]+]]: 22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long var(TLSGD)-(([[PCPOS2]]+4)-[[CP2_TMP]]) 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Workerentry: 25*9880d681SAndroid Build Coastguard Worker br label %loop 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Workerloop: 28*9880d681SAndroid Build Coastguard Worker %i = phi i32 [ %inc, %next ], [ 0, %entry ] 29*9880d681SAndroid Build Coastguard Worker %val = load i32, i32* @var 30*9880d681SAndroid Build Coastguard Worker %tst = icmp eq i32 %val, 0 31*9880d681SAndroid Build Coastguard Worker br i1 %tst, label %next, label %call 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workercall: 34*9880d681SAndroid Build Coastguard Worker tail call void @foo(i32* nonnull @var) #2 35*9880d681SAndroid Build Coastguard Worker br label %next 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Workernext: 38*9880d681SAndroid Build Coastguard Worker %inc = add i32 %i, 1 39*9880d681SAndroid Build Coastguard Worker %stop = icmp eq i32 %inc, %n 40*9880d681SAndroid Build Coastguard Worker br i1 %stop, label %done, label %loop 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Workerdone: 43*9880d681SAndroid Build Coastguard Worker ret void 44*9880d681SAndroid Build Coastguard Worker} 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Workerdeclare void @foo(i32*)