1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel -relocation-model=pic < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: foo6: 4*9880d681SAndroid Build Coastguard Worker; CHECK: %while.body 5*9880d681SAndroid Build Coastguard Worker; CHECK: lw $25, %call16(foo2)(${{[0-9]+}}) 6*9880d681SAndroid Build Coastguard Worker; CHECK: jalr $25 7*9880d681SAndroid Build Coastguard Worker; CHECK: %while.end 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workerdefine void @foo6(i32 %n) { 10*9880d681SAndroid Build Coastguard Workerentry: 11*9880d681SAndroid Build Coastguard Worker %tobool1 = icmp eq i32 %n, 0 12*9880d681SAndroid Build Coastguard Worker br i1 %tobool1, label %while.end, label %while.body 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerwhile.body: ; preds = %entry, %while.body 15*9880d681SAndroid Build Coastguard Worker %n.addr.02 = phi i32 [ %dec, %while.body ], [ %n, %entry ] 16*9880d681SAndroid Build Coastguard Worker %dec = add nsw i32 %n.addr.02, -1 17*9880d681SAndroid Build Coastguard Worker tail call void @foo2() 18*9880d681SAndroid Build Coastguard Worker %tobool = icmp eq i32 %dec, 0 19*9880d681SAndroid Build Coastguard Worker br i1 %tobool, label %while.end, label %while.body 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerwhile.end: ; preds = %while.body, %entry 22*9880d681SAndroid Build Coastguard Worker ret void 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerdeclare void @foo2() 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: foo1: 28*9880d681SAndroid Build Coastguard Worker; CHECK: lw $25, %call16(foo2)(${{[0-9]+}}) 29*9880d681SAndroid Build Coastguard Worker; CHECK: jalr $25 30*9880d681SAndroid Build Coastguard Worker; CHECK: lw $25, %call16(foo2)(${{[0-9]+}}) 31*9880d681SAndroid Build Coastguard Worker; CHECK: jalr $25 32*9880d681SAndroid Build Coastguard Worker; CHECK: lw $25, %call16(foo2)(${{[0-9]+}}) 33*9880d681SAndroid Build Coastguard Worker; CHECK: jalr $25 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Workerdefine void @foo1() { 36*9880d681SAndroid Build Coastguard Workerentry: 37*9880d681SAndroid Build Coastguard Worker tail call void @foo2() 38*9880d681SAndroid Build Coastguard Worker tail call void @foo2() 39*9880d681SAndroid Build Coastguard Worker tail call void @foo2() 40*9880d681SAndroid Build Coastguard Worker ret void 41*9880d681SAndroid Build Coastguard Worker} 42