1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -verify-machineinstrs 2*9880d681SAndroid Build Coastguard Worker; PR13188 3*9880d681SAndroid Build Coastguard Worker; 4*9880d681SAndroid Build Coastguard Worker; The _Unwind_RaiseException function can return normally and via eh.return. 5*9880d681SAndroid Build Coastguard Worker; This causes confusion about the function live-out registers, since the two 6*9880d681SAndroid Build Coastguard Worker; different ways of returning have different return values. 7*9880d681SAndroid Build Coastguard Worker; 8*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" 9*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-unknown-freebsd9.0" 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker%struct._Unwind_Context = type { [18 x i8*], i8*, i8*, i8*, %struct.dwarf_eh_bases, i64, i64, i64, [18 x i8] } 12*9880d681SAndroid Build Coastguard Worker%struct.dwarf_eh_bases = type { i8*, i8*, i8* } 13*9880d681SAndroid Build Coastguard Worker%struct._Unwind_FrameState = type { %struct.frame_state_reg_info, i64, i64, i8*, i32, i8*, i32 (i32, i32, i64, %struct._Unwind_Exception*, %struct._Unwind_Context*)*, i64, i64, i64, i8, i8, i8, i8, i8* } 14*9880d681SAndroid Build Coastguard Worker%struct.frame_state_reg_info = type { [18 x %struct.anon], %struct.frame_state_reg_info* } 15*9880d681SAndroid Build Coastguard Worker%struct.anon = type { %union.anon, i32 } 16*9880d681SAndroid Build Coastguard Worker%union.anon = type { i64 } 17*9880d681SAndroid Build Coastguard Worker%struct._Unwind_Exception = type { i64, void (i32, %struct._Unwind_Exception*)*, i64, i64 } 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker@dwarf_reg_size_table = external hidden unnamed_addr global [18 x i8], align 16 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerdeclare void @abort() noreturn 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerdeclare fastcc i32 @uw_frame_state_for(%struct._Unwind_Context*, %struct._Unwind_FrameState*) uwtable 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerdefine hidden i32 @_Unwind_RaiseException(%struct._Unwind_Exception* %exc) uwtable { 26*9880d681SAndroid Build Coastguard Workerentry: 27*9880d681SAndroid Build Coastguard Worker %fs.i = alloca %struct._Unwind_FrameState, align 8 28*9880d681SAndroid Build Coastguard Worker %this_context = alloca %struct._Unwind_Context, align 8 29*9880d681SAndroid Build Coastguard Worker %cur_context = alloca %struct._Unwind_Context, align 8 30*9880d681SAndroid Build Coastguard Worker %fs = alloca %struct._Unwind_FrameState, align 8 31*9880d681SAndroid Build Coastguard Worker call void @llvm.eh.unwind.init() 32*9880d681SAndroid Build Coastguard Worker %0 = call i8* @llvm.eh.dwarf.cfa(i32 0) 33*9880d681SAndroid Build Coastguard Worker %1 = call i8* @llvm.returnaddress(i32 0) 34*9880d681SAndroid Build Coastguard Worker call fastcc void @uw_init_context_1(%struct._Unwind_Context* %this_context, i8* %0, i8* %1) 35*9880d681SAndroid Build Coastguard Worker %2 = bitcast %struct._Unwind_Context* %cur_context to i8* 36*9880d681SAndroid Build Coastguard Worker %3 = bitcast %struct._Unwind_Context* %this_context to i8* 37*9880d681SAndroid Build Coastguard Worker call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 240, i32 8, i1 false) 38*9880d681SAndroid Build Coastguard Worker %personality = getelementptr inbounds %struct._Unwind_FrameState, %struct._Unwind_FrameState* %fs, i64 0, i32 6 39*9880d681SAndroid Build Coastguard Worker %retaddr_column.i = getelementptr inbounds %struct._Unwind_FrameState, %struct._Unwind_FrameState* %fs, i64 0, i32 9 40*9880d681SAndroid Build Coastguard Worker %flags.i.i.i.i = getelementptr inbounds %struct._Unwind_Context, %struct._Unwind_Context* %cur_context, i64 0, i32 5 41*9880d681SAndroid Build Coastguard Worker %ra.i = getelementptr inbounds %struct._Unwind_Context, %struct._Unwind_Context* %cur_context, i64 0, i32 2 42*9880d681SAndroid Build Coastguard Worker %exception_class = getelementptr inbounds %struct._Unwind_Exception, %struct._Unwind_Exception* %exc, i64 0, i32 0 43*9880d681SAndroid Build Coastguard Worker br label %while.body 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workerwhile.body: ; preds = %uw_update_context.exit, %entry 46*9880d681SAndroid Build Coastguard Worker %call = call fastcc i32 @uw_frame_state_for(%struct._Unwind_Context* %cur_context, %struct._Unwind_FrameState* %fs) 47*9880d681SAndroid Build Coastguard Worker switch i32 %call, label %do.end21 [ 48*9880d681SAndroid Build Coastguard Worker i32 5, label %do.end21.loopexit46 49*9880d681SAndroid Build Coastguard Worker i32 0, label %if.end3 50*9880d681SAndroid Build Coastguard Worker ] 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Workerif.end3: ; preds = %while.body 53*9880d681SAndroid Build Coastguard Worker %4 = load i32 (i32, i32, i64, %struct._Unwind_Exception*, %struct._Unwind_Context*)*, i32 (i32, i32, i64, %struct._Unwind_Exception*, %struct._Unwind_Context*)** %personality, align 8 54*9880d681SAndroid Build Coastguard Worker %tobool = icmp eq i32 (i32, i32, i64, %struct._Unwind_Exception*, %struct._Unwind_Context*)* %4, null 55*9880d681SAndroid Build Coastguard Worker br i1 %tobool, label %if.end13, label %if.then4 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Workerif.then4: ; preds = %if.end3 58*9880d681SAndroid Build Coastguard Worker %5 = load i64, i64* %exception_class, align 8 59*9880d681SAndroid Build Coastguard Worker %call6 = call i32 %4(i32 1, i32 1, i64 %5, %struct._Unwind_Exception* %exc, %struct._Unwind_Context* %cur_context) 60*9880d681SAndroid Build Coastguard Worker switch i32 %call6, label %do.end21.loopexit46 [ 61*9880d681SAndroid Build Coastguard Worker i32 6, label %while.end 62*9880d681SAndroid Build Coastguard Worker i32 8, label %if.end13 63*9880d681SAndroid Build Coastguard Worker ] 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Workerif.end13: ; preds = %if.then4, %if.end3 66*9880d681SAndroid Build Coastguard Worker call fastcc void @uw_update_context_1(%struct._Unwind_Context* %cur_context, %struct._Unwind_FrameState* %fs) 67*9880d681SAndroid Build Coastguard Worker %6 = load i64, i64* %retaddr_column.i, align 8 68*9880d681SAndroid Build Coastguard Worker %conv.i = trunc i64 %6 to i32 69*9880d681SAndroid Build Coastguard Worker %cmp.i.i.i = icmp slt i32 %conv.i, 18 70*9880d681SAndroid Build Coastguard Worker br i1 %cmp.i.i.i, label %cond.end.i.i.i, label %cond.true.i.i.i 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Workercond.true.i.i.i: ; preds = %if.end13 73*9880d681SAndroid Build Coastguard Worker call void @abort() noreturn 74*9880d681SAndroid Build Coastguard Worker unreachable 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Workercond.end.i.i.i: ; preds = %if.end13 77*9880d681SAndroid Build Coastguard Worker %sext.i = shl i64 %6, 32 78*9880d681SAndroid Build Coastguard Worker %idxprom.i.i.i = ashr exact i64 %sext.i, 32 79*9880d681SAndroid Build Coastguard Worker %arrayidx.i.i.i = getelementptr inbounds [18 x i8], [18 x i8]* @dwarf_reg_size_table, i64 0, i64 %idxprom.i.i.i 80*9880d681SAndroid Build Coastguard Worker %7 = load i8, i8* %arrayidx.i.i.i, align 1 81*9880d681SAndroid Build Coastguard Worker %arrayidx2.i.i.i = getelementptr inbounds %struct._Unwind_Context, %struct._Unwind_Context* %cur_context, i64 0, i32 0, i64 %idxprom.i.i.i 82*9880d681SAndroid Build Coastguard Worker %8 = load i8*, i8** %arrayidx2.i.i.i, align 8 83*9880d681SAndroid Build Coastguard Worker %9 = load i64, i64* %flags.i.i.i.i, align 8 84*9880d681SAndroid Build Coastguard Worker %and.i.i.i.i = and i64 %9, 4611686018427387904 85*9880d681SAndroid Build Coastguard Worker %tobool.i.i.i = icmp eq i64 %and.i.i.i.i, 0 86*9880d681SAndroid Build Coastguard Worker br i1 %tobool.i.i.i, label %if.end.i.i.i, label %land.lhs.true.i.i.i 87*9880d681SAndroid Build Coastguard Worker 88*9880d681SAndroid Build Coastguard Workerland.lhs.true.i.i.i: ; preds = %cond.end.i.i.i 89*9880d681SAndroid Build Coastguard Worker %arrayidx4.i.i.i = getelementptr inbounds %struct._Unwind_Context, %struct._Unwind_Context* %cur_context, i64 0, i32 8, i64 %idxprom.i.i.i 90*9880d681SAndroid Build Coastguard Worker %10 = load i8, i8* %arrayidx4.i.i.i, align 1 91*9880d681SAndroid Build Coastguard Worker %tobool6.i.i.i = icmp eq i8 %10, 0 92*9880d681SAndroid Build Coastguard Worker br i1 %tobool6.i.i.i, label %if.end.i.i.i, label %if.then.i.i.i 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Workerif.then.i.i.i: ; preds = %land.lhs.true.i.i.i 95*9880d681SAndroid Build Coastguard Worker %11 = ptrtoint i8* %8 to i64 96*9880d681SAndroid Build Coastguard Worker br label %uw_update_context.exit 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Workerif.end.i.i.i: ; preds = %land.lhs.true.i.i.i, %cond.end.i.i.i 99*9880d681SAndroid Build Coastguard Worker %cmp8.i.i.i = icmp eq i8 %7, 8 100*9880d681SAndroid Build Coastguard Worker br i1 %cmp8.i.i.i, label %if.then10.i.i.i, label %cond.true14.i.i.i 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Workerif.then10.i.i.i: ; preds = %if.end.i.i.i 103*9880d681SAndroid Build Coastguard Worker %12 = bitcast i8* %8 to i64* 104*9880d681SAndroid Build Coastguard Worker %13 = load i64, i64* %12, align 8 105*9880d681SAndroid Build Coastguard Worker br label %uw_update_context.exit 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Workercond.true14.i.i.i: ; preds = %if.end.i.i.i 108*9880d681SAndroid Build Coastguard Worker call void @abort() noreturn 109*9880d681SAndroid Build Coastguard Worker unreachable 110*9880d681SAndroid Build Coastguard Worker 111*9880d681SAndroid Build Coastguard Workeruw_update_context.exit: ; preds = %if.then10.i.i.i, %if.then.i.i.i 112*9880d681SAndroid Build Coastguard Worker %retval.0.i.i.i = phi i64 [ %11, %if.then.i.i.i ], [ %13, %if.then10.i.i.i ] 113*9880d681SAndroid Build Coastguard Worker %14 = inttoptr i64 %retval.0.i.i.i to i8* 114*9880d681SAndroid Build Coastguard Worker store i8* %14, i8** %ra.i, align 8 115*9880d681SAndroid Build Coastguard Worker br label %while.body 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Workerwhile.end: ; preds = %if.then4 118*9880d681SAndroid Build Coastguard Worker %private_1 = getelementptr inbounds %struct._Unwind_Exception, %struct._Unwind_Exception* %exc, i64 0, i32 2 119*9880d681SAndroid Build Coastguard Worker store i64 0, i64* %private_1, align 8 120*9880d681SAndroid Build Coastguard Worker %15 = load i8*, i8** %ra.i, align 8 121*9880d681SAndroid Build Coastguard Worker %16 = ptrtoint i8* %15 to i64 122*9880d681SAndroid Build Coastguard Worker %private_2 = getelementptr inbounds %struct._Unwind_Exception, %struct._Unwind_Exception* %exc, i64 0, i32 3 123*9880d681SAndroid Build Coastguard Worker store i64 %16, i64* %private_2, align 8 124*9880d681SAndroid Build Coastguard Worker call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 240, i32 8, i1 false) 125*9880d681SAndroid Build Coastguard Worker %17 = bitcast %struct._Unwind_FrameState* %fs.i to i8* 126*9880d681SAndroid Build Coastguard Worker call void @llvm.lifetime.start(i64 -1, i8* %17) 127*9880d681SAndroid Build Coastguard Worker %personality.i = getelementptr inbounds %struct._Unwind_FrameState, %struct._Unwind_FrameState* %fs.i, i64 0, i32 6 128*9880d681SAndroid Build Coastguard Worker %retaddr_column.i22 = getelementptr inbounds %struct._Unwind_FrameState, %struct._Unwind_FrameState* %fs.i, i64 0, i32 9 129*9880d681SAndroid Build Coastguard Worker br label %while.body.i 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Workerwhile.body.i: ; preds = %uw_update_context.exit44, %while.end 132*9880d681SAndroid Build Coastguard Worker %call.i = call fastcc i32 @uw_frame_state_for(%struct._Unwind_Context* %cur_context, %struct._Unwind_FrameState* %fs.i) 133*9880d681SAndroid Build Coastguard Worker %18 = load i8*, i8** %ra.i, align 8 134*9880d681SAndroid Build Coastguard Worker %19 = ptrtoint i8* %18 to i64 135*9880d681SAndroid Build Coastguard Worker %20 = load i64, i64* %private_2, align 8 136*9880d681SAndroid Build Coastguard Worker %cmp.i = icmp eq i64 %19, %20 137*9880d681SAndroid Build Coastguard Worker %cmp2.i = icmp eq i32 %call.i, 0 138*9880d681SAndroid Build Coastguard Worker br i1 %cmp2.i, label %if.end.i, label %do.end21 139*9880d681SAndroid Build Coastguard Worker 140*9880d681SAndroid Build Coastguard Workerif.end.i: ; preds = %while.body.i 141*9880d681SAndroid Build Coastguard Worker %21 = load i32 (i32, i32, i64, %struct._Unwind_Exception*, %struct._Unwind_Context*)*, i32 (i32, i32, i64, %struct._Unwind_Exception*, %struct._Unwind_Context*)** %personality.i, align 8 142*9880d681SAndroid Build Coastguard Worker %tobool.i = icmp eq i32 (i32, i32, i64, %struct._Unwind_Exception*, %struct._Unwind_Context*)* %21, null 143*9880d681SAndroid Build Coastguard Worker br i1 %tobool.i, label %if.end12.i, label %if.then3.i 144*9880d681SAndroid Build Coastguard Worker 145*9880d681SAndroid Build Coastguard Workerif.then3.i: ; preds = %if.end.i 146*9880d681SAndroid Build Coastguard Worker %or.i = select i1 %cmp.i, i32 6, i32 2 147*9880d681SAndroid Build Coastguard Worker %22 = load i64, i64* %exception_class, align 8 148*9880d681SAndroid Build Coastguard Worker %call5.i = call i32 %21(i32 1, i32 %or.i, i64 %22, %struct._Unwind_Exception* %exc, %struct._Unwind_Context* %cur_context) 149*9880d681SAndroid Build Coastguard Worker switch i32 %call5.i, label %do.end21 [ 150*9880d681SAndroid Build Coastguard Worker i32 7, label %do.body19 151*9880d681SAndroid Build Coastguard Worker i32 8, label %if.end12.i 152*9880d681SAndroid Build Coastguard Worker ] 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Workerif.end12.i: ; preds = %if.then3.i, %if.end.i 155*9880d681SAndroid Build Coastguard Worker br i1 %cmp.i, label %cond.true.i, label %cond.end.i 156*9880d681SAndroid Build Coastguard Worker 157*9880d681SAndroid Build Coastguard Workercond.true.i: ; preds = %if.end12.i 158*9880d681SAndroid Build Coastguard Worker call void @abort() noreturn 159*9880d681SAndroid Build Coastguard Worker unreachable 160*9880d681SAndroid Build Coastguard Worker 161*9880d681SAndroid Build Coastguard Workercond.end.i: ; preds = %if.end12.i 162*9880d681SAndroid Build Coastguard Worker call fastcc void @uw_update_context_1(%struct._Unwind_Context* %cur_context, %struct._Unwind_FrameState* %fs.i) 163*9880d681SAndroid Build Coastguard Worker %23 = load i64, i64* %retaddr_column.i22, align 8 164*9880d681SAndroid Build Coastguard Worker %conv.i23 = trunc i64 %23 to i32 165*9880d681SAndroid Build Coastguard Worker %cmp.i.i.i24 = icmp slt i32 %conv.i23, 18 166*9880d681SAndroid Build Coastguard Worker br i1 %cmp.i.i.i24, label %cond.end.i.i.i33, label %cond.true.i.i.i25 167*9880d681SAndroid Build Coastguard Worker 168*9880d681SAndroid Build Coastguard Workercond.true.i.i.i25: ; preds = %cond.end.i 169*9880d681SAndroid Build Coastguard Worker call void @abort() noreturn 170*9880d681SAndroid Build Coastguard Worker unreachable 171*9880d681SAndroid Build Coastguard Worker 172*9880d681SAndroid Build Coastguard Workercond.end.i.i.i33: ; preds = %cond.end.i 173*9880d681SAndroid Build Coastguard Worker %sext.i26 = shl i64 %23, 32 174*9880d681SAndroid Build Coastguard Worker %idxprom.i.i.i27 = ashr exact i64 %sext.i26, 32 175*9880d681SAndroid Build Coastguard Worker %arrayidx.i.i.i28 = getelementptr inbounds [18 x i8], [18 x i8]* @dwarf_reg_size_table, i64 0, i64 %idxprom.i.i.i27 176*9880d681SAndroid Build Coastguard Worker %24 = load i8, i8* %arrayidx.i.i.i28, align 1 177*9880d681SAndroid Build Coastguard Worker %arrayidx2.i.i.i29 = getelementptr inbounds %struct._Unwind_Context, %struct._Unwind_Context* %cur_context, i64 0, i32 0, i64 %idxprom.i.i.i27 178*9880d681SAndroid Build Coastguard Worker %25 = load i8*, i8** %arrayidx2.i.i.i29, align 8 179*9880d681SAndroid Build Coastguard Worker %26 = load i64, i64* %flags.i.i.i.i, align 8 180*9880d681SAndroid Build Coastguard Worker %and.i.i.i.i31 = and i64 %26, 4611686018427387904 181*9880d681SAndroid Build Coastguard Worker %tobool.i.i.i32 = icmp eq i64 %and.i.i.i.i31, 0 182*9880d681SAndroid Build Coastguard Worker br i1 %tobool.i.i.i32, label %if.end.i.i.i39, label %land.lhs.true.i.i.i36 183*9880d681SAndroid Build Coastguard Worker 184*9880d681SAndroid Build Coastguard Workerland.lhs.true.i.i.i36: ; preds = %cond.end.i.i.i33 185*9880d681SAndroid Build Coastguard Worker %arrayidx4.i.i.i34 = getelementptr inbounds %struct._Unwind_Context, %struct._Unwind_Context* %cur_context, i64 0, i32 8, i64 %idxprom.i.i.i27 186*9880d681SAndroid Build Coastguard Worker %27 = load i8, i8* %arrayidx4.i.i.i34, align 1 187*9880d681SAndroid Build Coastguard Worker %tobool6.i.i.i35 = icmp eq i8 %27, 0 188*9880d681SAndroid Build Coastguard Worker br i1 %tobool6.i.i.i35, label %if.end.i.i.i39, label %if.then.i.i.i37 189*9880d681SAndroid Build Coastguard Worker 190*9880d681SAndroid Build Coastguard Workerif.then.i.i.i37: ; preds = %land.lhs.true.i.i.i36 191*9880d681SAndroid Build Coastguard Worker %28 = ptrtoint i8* %25 to i64 192*9880d681SAndroid Build Coastguard Worker br label %uw_update_context.exit44 193*9880d681SAndroid Build Coastguard Worker 194*9880d681SAndroid Build Coastguard Workerif.end.i.i.i39: ; preds = %land.lhs.true.i.i.i36, %cond.end.i.i.i33 195*9880d681SAndroid Build Coastguard Worker %cmp8.i.i.i38 = icmp eq i8 %24, 8 196*9880d681SAndroid Build Coastguard Worker br i1 %cmp8.i.i.i38, label %if.then10.i.i.i40, label %cond.true14.i.i.i41 197*9880d681SAndroid Build Coastguard Worker 198*9880d681SAndroid Build Coastguard Workerif.then10.i.i.i40: ; preds = %if.end.i.i.i39 199*9880d681SAndroid Build Coastguard Worker %29 = bitcast i8* %25 to i64* 200*9880d681SAndroid Build Coastguard Worker %30 = load i64, i64* %29, align 8 201*9880d681SAndroid Build Coastguard Worker br label %uw_update_context.exit44 202*9880d681SAndroid Build Coastguard Worker 203*9880d681SAndroid Build Coastguard Workercond.true14.i.i.i41: ; preds = %if.end.i.i.i39 204*9880d681SAndroid Build Coastguard Worker call void @abort() noreturn 205*9880d681SAndroid Build Coastguard Worker unreachable 206*9880d681SAndroid Build Coastguard Worker 207*9880d681SAndroid Build Coastguard Workeruw_update_context.exit44: ; preds = %if.then10.i.i.i40, %if.then.i.i.i37 208*9880d681SAndroid Build Coastguard Worker %retval.0.i.i.i42 = phi i64 [ %28, %if.then.i.i.i37 ], [ %30, %if.then10.i.i.i40 ] 209*9880d681SAndroid Build Coastguard Worker %31 = inttoptr i64 %retval.0.i.i.i42 to i8* 210*9880d681SAndroid Build Coastguard Worker store i8* %31, i8** %ra.i, align 8 211*9880d681SAndroid Build Coastguard Worker br label %while.body.i 212*9880d681SAndroid Build Coastguard Worker 213*9880d681SAndroid Build Coastguard Workerdo.body19: ; preds = %if.then3.i 214*9880d681SAndroid Build Coastguard Worker call void @llvm.lifetime.end(i64 -1, i8* %17) 215*9880d681SAndroid Build Coastguard Worker %call20 = call fastcc i64 @uw_install_context_1(%struct._Unwind_Context* %this_context, %struct._Unwind_Context* %cur_context) 216*9880d681SAndroid Build Coastguard Worker %32 = load i8*, i8** %ra.i, align 8 217*9880d681SAndroid Build Coastguard Worker call void @llvm.eh.return.i64(i64 %call20, i8* %32) 218*9880d681SAndroid Build Coastguard Worker unreachable 219*9880d681SAndroid Build Coastguard Worker 220*9880d681SAndroid Build Coastguard Workerdo.end21.loopexit46: ; preds = %if.then4, %while.body 221*9880d681SAndroid Build Coastguard Worker %retval.0.ph = phi i32 [ 3, %if.then4 ], [ 5, %while.body ] 222*9880d681SAndroid Build Coastguard Worker br label %do.end21 223*9880d681SAndroid Build Coastguard Worker 224*9880d681SAndroid Build Coastguard Workerdo.end21: ; preds = %do.end21.loopexit46, %if.then3.i, %while.body.i, %while.body 225*9880d681SAndroid Build Coastguard Worker %retval.0 = phi i32 [ %retval.0.ph, %do.end21.loopexit46 ], [ 3, %while.body ], [ 2, %while.body.i ], [ 2, %if.then3.i ] 226*9880d681SAndroid Build Coastguard Worker ret i32 %retval.0 227*9880d681SAndroid Build Coastguard Worker} 228*9880d681SAndroid Build Coastguard Worker 229*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.eh.unwind.init() nounwind 230*9880d681SAndroid Build Coastguard Worker 231*9880d681SAndroid Build Coastguard Workerdeclare fastcc void @uw_init_context_1(%struct._Unwind_Context*, i8*, i8*) uwtable 232*9880d681SAndroid Build Coastguard Worker 233*9880d681SAndroid Build Coastguard Workerdeclare i8* @llvm.eh.dwarf.cfa(i32) nounwind 234*9880d681SAndroid Build Coastguard Worker 235*9880d681SAndroid Build Coastguard Workerdeclare i8* @llvm.returnaddress(i32) nounwind readnone 236*9880d681SAndroid Build Coastguard Worker 237*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind 238*9880d681SAndroid Build Coastguard Worker 239*9880d681SAndroid Build Coastguard Workerdeclare fastcc i64 @uw_install_context_1(%struct._Unwind_Context*, %struct._Unwind_Context*) uwtable 240*9880d681SAndroid Build Coastguard Worker 241*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.eh.return.i64(i64, i8*) nounwind 242*9880d681SAndroid Build Coastguard Worker 243*9880d681SAndroid Build Coastguard Workerdeclare fastcc void @uw_update_context_1(%struct._Unwind_Context*, %struct._Unwind_FrameState* nocapture) uwtable 244*9880d681SAndroid Build Coastguard Worker 245*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.lifetime.start(i64, i8* nocapture) nounwind 246*9880d681SAndroid Build Coastguard Worker 247*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.lifetime.end(i64, i8* nocapture) nounwind 248