llvm.org GIT mirror llvm / 8806c7b
Split eh.select / eh.typeid.for intrinsics into i32/i64 versions. This is needed, because they just "mark" register liveins and we let frontend solve type issue, not lowering code :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41763 91177308-0d34-0410-b5e6-96231b3b80d8 Anton Korobeynikov 13 years ago
8 changed file(s) with 126 addition(s) and 111 deletion(s). Raw diff Collapse all Expand all
354354
355355
356356

                  
                
357 i32 %llvm.eh.selector(i8*, i8*, i8*, ...)
357 i32 %llvm.eh.selector.i32(i8*, i8*, i8*, ...)
358 i64 %llvm.eh.selector.i64(i8*, i8*, i8*, ...)
358359
359360
360361

This intrinsic indicates that the exception selector is available at this

387388
388389
389390

                  
                
390 i32 %llvm.eh.typeid.for(i8*)
391 i32 %llvm.eh.typeid.for.i32(i8*)
392 i64 %llvm.eh.typeid.for.i64(i8*)
391393
392394
393395

This intrinsic returns the type info index in the exception table of the

217217
218218 //===------------------ Exception Handling Intrinsics----------------------===//
219219 //
220 def int_eh_exception : Intrinsic<[llvm_ptr_ty]>;
221 def int_eh_selector : Intrinsic<[llvm_i32_ty, llvm_ptr_ty, llvm_ptr_ty,
222 llvm_vararg_ty]>;
223 def int_eh_typeid_for : Intrinsic<[llvm_i32_ty, llvm_ptr_ty]>;
220 def int_eh_exception : Intrinsic<[llvm_ptr_ty]>;
221 def int_eh_selector_i32 : Intrinsic<[llvm_i32_ty, llvm_ptr_ty, llvm_ptr_ty,
222 llvm_vararg_ty]>;
223 def int_eh_selector_i64 : Intrinsic<[llvm_i64_ty, llvm_ptr_ty, llvm_ptr_ty,
224 llvm_vararg_ty]>;
225
226 def int_eh_typeid_for_i32 : Intrinsic<[llvm_i32_ty, llvm_ptr_ty]>;
227 def int_eh_typeid_for_i64 : Intrinsic<[llvm_i64_ty, llvm_ptr_ty]>;
224228
225229 def int_eh_return : Intrinsic<[llvm_void_ty, llvm_i32_ty, llvm_ptr_ty]>,
226230 GCCBuiltin<"__builtin_eh_return">;
709709 break; // Simply strip out debugging intrinsics
710710
711711 case Intrinsic::eh_exception:
712 case Intrinsic::eh_selector:
712 case Intrinsic::eh_selector_i32:
713 case Intrinsic::eh_selector_i64:
713714 CI->replaceAllUsesWith(Constant::getNullValue(CI->getType()));
714715 break;
715716
716 case Intrinsic::eh_typeid_for:
717 case Intrinsic::eh_typeid_for_i32:
718 case Intrinsic::eh_typeid_for_i64:
717719 // Return something different to eh_selector.
718720 CI->replaceAllUsesWith(ConstantInt::get(CI->getType(), 1));
719721 break;
211211 /// eh.selector intrinsic.
212212 static bool isSelector(Instruction *I) {
213213 if (IntrinsicInst *II = dyn_cast(I))
214 return II->getIntrinsicID() == Intrinsic::eh_selector;
214 return (II->getIntrinsicID() == Intrinsic::eh_selector_i32 ||
215 II->getIntrinsicID() == Intrinsic::eh_selector_i64);
215216 return false;
216217 }
217218
26872688 return 0;
26882689 }
26892690
2690 case Intrinsic::eh_selector:{
2691 case Intrinsic::eh_selector_i32:
2692 case Intrinsic::eh_selector_i64: {
26912693 MachineModuleInfo *MMI = DAG.getMachineModuleInfo();
2692
2694 MVT::ValueType VT = (Intrinsic == Intrinsic::eh_selector_i32 ?
2695 MVT::i32 : MVT::i64);
2696
26932697 if (ExceptionHandling && MMI) {
26942698 if (CurMBB->isLandingPad())
26952699 addCatchInfo(I, MMI, CurMBB);
27032707 }
27042708
27052709 // Insert the EHSELECTION instruction.
2706 SDVTList VTs = DAG.getVTList(MVT::i32, MVT::Other);
2710 SDVTList VTs = DAG.getVTList(VT, MVT::Other);
27072711 SDOperand Ops[2];
27082712 Ops[0] = getValue(I.getOperand(1));
27092713 Ops[1] = getRoot();
27112715 setValue(&I, Op);
27122716 DAG.setRoot(Op.getValue(1));
27132717 } else {
2714 setValue(&I, DAG.getConstant(0, TLI.getPointerTy()));
2718 setValue(&I, DAG.getConstant(0, VT));
27152719 }
27162720
27172721 return 0;
27182722 }
2719
2720 case Intrinsic::eh_typeid_for: {
2723
2724 case Intrinsic::eh_typeid_for_i32:
2725 case Intrinsic::eh_typeid_for_i64: {
27212726 MachineModuleInfo *MMI = DAG.getMachineModuleInfo();
2727 MVT::ValueType VT = (Intrinsic == Intrinsic::eh_typeid_for_i32 ?
2728 MVT::i32 : MVT::i64);
27222729
27232730 if (MMI) {
27242731 // Find the type id for the given typeinfo.
27252732 GlobalVariable *GV = ExtractTypeInfo(I.getOperand(1));
27262733
27272734 unsigned TypeID = MMI->getTypeIDFor(GV);
2728 setValue(&I, DAG.getConstant(TypeID, MVT::i32));
2735 setValue(&I, DAG.getConstant(TypeID, VT));
27292736 } else {
27302737 // Return something different to eh_selector.
2731 setValue(&I, DAG.getConstant(1, MVT::i32));
2738 setValue(&I, DAG.getConstant(1, VT));
27322739 }
27332740
27342741 return 0;
42044211 // If the source and destination are known to not be aliases, we can
42054212 // lower memmove as memcpy.
42064213 if (Op == ISD::MEMMOVE) {
4207 uint64_t Size = -1;
4214 uint64_t Size = -1ULL;
42084215 if (ConstantSDNode *C = dyn_cast(Op3))
42094216 Size = C->getValue();
42104217 if (AA.alias(I.getOperand(1), Size, I.getOperand(2), Size) ==
None ; RUN: llvm-as < %s | llc -enable-eh
0 ; RUN: llvm-as < %s | llc -enable-eh -march=x86
11
22 %struct.exception = type { i8, i8, i32, i8*, i8*, i32, i8* }
33 @program_error = external global %struct.exception ; <%struct.exception*> [#uses=1]
44
55 define void @typeinfo() {
66 entry:
7 %eh_typeid = tail call i32 @llvm.eh.typeid.for( i8* getelementptr (%struct.exception* @program_error, i32 0, i32 0) ) ; [#uses=0]
7 %eh_typeid = tail call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @program_error, i32 0, i32 0) ) ; [#uses=0]
88 ret void
99 }
1010
11 declare i32 @llvm.eh.typeid.for(i8*)
11 declare i32 @llvm.eh.typeid.for.i32(i8*)
88
99 unwind: ; preds = %entry
1010 %eh_ptr = tail call i8* @llvm.eh.exception( ) ; [#uses=2]
11 %eh_select = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i8* @error ) ; [#uses=1]
12 %eh_typeid = tail call i32 @llvm.eh.typeid.for( i8* @error ) ; [#uses=1]
11 %eh_select = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i8* @error ) ; [#uses=1]
12 %eh_typeid = tail call i32 @llvm.eh.typeid.for.i32( i8* @error ) ; [#uses=1]
1313 %tmp2 = icmp eq i32 %eh_select, %eh_typeid ; [#uses=1]
1414 br i1 %tmp2, label %eh_then, label %Unwind
1515
2525
2626 declare i8* @llvm.eh.exception()
2727
28 declare i32 @llvm.eh.selector(i8*, i8*, ...)
28 declare i32 @llvm.eh.selector.i32(i8*, i8*, ...)
2929
30 declare i32 @llvm.eh.typeid.for(i8*)
30 declare i32 @llvm.eh.typeid.for.i32(i8*)
3131
3232 declare i32 @__gnat_eh_personality(...)
3333
None ; RUN: llvm-as < %s | llc -enable-eh -asm-verbose -o - | \
0 ; RUN: llvm-as < %s | llc -march=x86 -enable-eh -asm-verbose -o - | \
11 ; RUN: grep -A 3 {Llabel137.*Region start} | grep {3.*Action}
22 ; PR1422
33 ; PR1508
269269
270270 unwind: ; preds = %cleanup798, %unwind783, %cond_true465
271271 %eh_ptr = call i8* @llvm.eh.exception( ) ; [#uses=3]
272 %eh_select = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
273 %eh_typeid8065921 = call i32 @llvm.eh.typeid.for( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
272 %eh_select = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
273 %eh_typeid8065921 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
274274 %tmp8085923 = icmp eq i32 %eh_select, %eh_typeid8065921 ; [#uses=1]
275275 br i1 %tmp8085923, label %eh_then809, label %eh_else823
276276
280280
281281 unwind468: ; preds = %cleanup, %unwind480, %cond_next467
282282 %eh_ptr469 = call i8* @llvm.eh.exception( ) ; [#uses=3]
283 %eh_select471 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr469, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
284 %eh_typeid5928 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
283 %eh_select471 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr469, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
284 %eh_typeid5928 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
285285 %tmp7815929 = icmp eq i32 %eh_select471, %eh_typeid5928 ; [#uses=1]
286286 br i1 %tmp7815929, label %eh_then, label %cleanup805
287287
295295
296296 unwind480: ; preds = %invcont734, %invcont717, %cond_next665, %cond_true663, %cond_next639, %cond_true637, %cond_next613, %cond_true611, %cond_next587, %cond_true585, %cond_next561, %cond_true559, %cond_next535, %cond_true533, %cond_next509, %cond_true507, %invcont472
297297 %eh_ptr481 = call i8* @llvm.eh.exception( ) ; [#uses=3]
298 %eh_select483 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr481, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
298 %eh_select483 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr481, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
299299 %tmp7685575 = ptrtoint i8* %tmp476 to i32 ; [#uses=1]
300300 %tmp76855755576 = zext i32 %tmp7685575 to i64 ; [#uses=1]
301301 %tmp7715572 = zext i32 %tmp479 to i64 ; [#uses=1]
440440 to label %cond_true856 unwind label %unwind468
441441
442442 cleanup779: ; preds = %unwind480
443 %eh_typeid = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
443 %eh_typeid = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
444444 %tmp781 = icmp eq i32 %eh_select483, %eh_typeid ; [#uses=1]
445445 br i1 %tmp781, label %eh_then, label %cleanup805
446446
451451
452452 unwind783: ; preds = %invcont789, %invcont787, %eh_then
453453 %eh_ptr784 = call i8* @llvm.eh.exception( ) ; [#uses=2]
454 %eh_select786 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr784, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=1]
454 %eh_select786 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr784, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=1]
455455 invoke void @__gnat_end_handler( i8* %eh_exception.35924.0 )
456456 to label %cleanup805 unwind label %unwind
457457
471471 cleanup805: ; preds = %unwind783, %cleanup779, %unwind468
472472 %eh_selector.0 = phi i32 [ %eh_select471, %unwind468 ], [ %eh_select483, %cleanup779 ], [ %eh_select786, %unwind783 ] ; [#uses=2]
473473 %eh_exception.0 = phi i8* [ %eh_ptr469, %unwind468 ], [ %eh_ptr481, %cleanup779 ], [ %eh_ptr784, %unwind783 ] ; [#uses=2]
474 %eh_typeid806 = call i32 @llvm.eh.typeid.for( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
474 %eh_typeid806 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
475475 %tmp808 = icmp eq i32 %eh_selector.0, %eh_typeid806 ; [#uses=1]
476476 br i1 %tmp808, label %eh_then809, label %eh_else823
477477
501501 eh_else823: ; preds = %cleanup805, %unwind
502502 %eh_selector.05912.1 = phi i32 [ %eh_select, %unwind ], [ %eh_selector.0, %cleanup805 ] ; [#uses=1]
503503 %eh_exception.05914.1 = phi i8* [ %eh_ptr, %unwind ], [ %eh_exception.0, %cleanup805 ] ; [#uses=4]
504 %eh_typeid824 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
504 %eh_typeid824 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
505505 %tmp826 = icmp eq i32 %eh_selector.05912.1, %eh_typeid824 ; [#uses=1]
506506 br i1 %tmp826, label %eh_then827, label %Unwind
507507
541541 unwind871: ; preds = %cond_next905, %bb887, %cond_true870
542542 %sat.3 = phi i8 [ %tmp340341, %cond_true870 ], [ %sat.1, %bb887 ], [ %sat.0, %cond_next905 ] ; [#uses=2]
543543 %eh_ptr872 = call i8* @llvm.eh.exception( ) ; [#uses=8]
544 %eh_select874 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr872, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
545 %eh_typeid915 = call i32 @llvm.eh.typeid.for( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
544 %eh_select874 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr872, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
545 %eh_typeid915 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
546546 %tmp917 = icmp eq i32 %eh_select874, %eh_typeid915 ; [#uses=1]
547547 br i1 %tmp917, label %eh_then918, label %eh_else932
548548
587587 br i1 %tmp462, label %cond_true973, label %UnifiedReturnBlock35
588588
589589 eh_else932: ; preds = %unwind871
590 %eh_typeid933 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
590 %eh_typeid933 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
591591 %tmp935 = icmp eq i32 %eh_select874, %eh_typeid933 ; [#uses=1]
592592 br i1 %tmp935, label %eh_then936, label %Unwind
593593
625625
626626 unwind974: ; preds = %cond_true973
627627 %eh_ptr975 = call i8* @llvm.eh.exception( ) ; [#uses=8]
628 %eh_select977 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr975, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
629 %eh_typeid13135959 = call i32 @llvm.eh.typeid.for( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
628 %eh_select977 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr975, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
629 %eh_typeid13135959 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
630630 %tmp13155961 = icmp eq i32 %eh_select977, %eh_typeid13135959 ; [#uses=1]
631631 br i1 %tmp13155961, label %eh_then1316, label %eh_else1330
632632
650650 br label %finally1311
651651
652652 eh_else1330: ; preds = %unwind974
653 %eh_typeid1331 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
653 %eh_typeid1331 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
654654 %tmp1333 = icmp eq i32 %eh_select977, %eh_typeid1331 ; [#uses=1]
655655 br i1 %tmp1333, label %eh_then1334, label %Unwind
656656
704704
705705 unwind1419: ; preds = %cleanup1702, %cleanup1686, %unwind1676, %cond_next1548, %cond_true1546, %cond_true1418
706706 %eh_ptr1420 = call i8* @llvm.eh.exception( ) ; [#uses=3]
707 %eh_select1422 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr1420, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
708 %eh_typeid17215981 = call i32 @llvm.eh.typeid.for( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
707 %eh_select1422 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr1420, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
708 %eh_typeid17215981 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
709709 %tmp17235983 = icmp eq i32 %eh_select1422, %eh_typeid17215981 ; [#uses=1]
710710 br i1 %tmp17235983, label %eh_then1724, label %eh_else1742
711711
784784
785785 unwind1574: ; preds = %invcont1638, %invcont1621, %bb1607, %bb1605, %cond_true1573
786786 %eh_ptr1575 = call i8* @llvm.eh.exception( ) ; [#uses=5]
787 %eh_select1577 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr1575, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
788 %eh_typeid1652 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
787 %eh_select1577 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr1575, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
788 %eh_typeid1652 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
789789 %tmp1654 = icmp eq i32 %eh_select1577, %eh_typeid1652 ; [#uses=1]
790790 br i1 %tmp1654, label %eh_then1655, label %cleanup1686
791791
839839
840840 unwind1659: ; preds = %invcont1665, %invcont1663, %eh_then1655
841841 %eh_ptr1660 = call i8* @llvm.eh.exception( ) ; [#uses=2]
842 %eh_select1662 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr1660, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=1]
842 %eh_select1662 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr1660, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=1]
843843 invoke void @__gnat_end_handler( i8* %eh_ptr1575 )
844844 to label %cleanup1686 unwind label %unwind1676
845845
858858
859859 unwind1676: ; preds = %cleanup1674, %unwind1659
860860 %eh_ptr1677 = call i8* @llvm.eh.exception( ) ; [#uses=2]
861 %eh_select1679 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr1677, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=1]
861 %eh_select1679 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr1677, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=1]
862862 %tmp169255575995 = ptrtoint i8* %tmp1556 to i32 ; [#uses=1]
863863 %tmp1692555755585996 = zext i32 %tmp169255575995 to i64 ; [#uses=1]
864864 %tmp169555545997 = zext i32 %tmp1559 to i64 ; [#uses=1]
890890 cleanup1720: ; preds = %cleanup1686, %unwind1676
891891 %eh_selector.185993.1 = phi i32 [ %eh_select1679, %unwind1676 ], [ %eh_selector.18, %cleanup1686 ] ; [#uses=2]
892892 %eh_exception.185994.1 = phi i8* [ %eh_ptr1677, %unwind1676 ], [ %eh_exception.18, %cleanup1686 ] ; [#uses=2]
893 %eh_typeid1721 = call i32 @llvm.eh.typeid.for( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
893 %eh_typeid1721 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
894894 %tmp1723 = icmp eq i32 %eh_selector.185993.1, %eh_typeid1721 ; [#uses=1]
895895 br i1 %tmp1723, label %eh_then1724, label %eh_else1742
896896
923923 eh_else1742: ; preds = %cleanup1720, %unwind1419
924924 %eh_selector.135972.1 = phi i32 [ %eh_select1422, %unwind1419 ], [ %eh_selector.185993.1, %cleanup1720 ] ; [#uses=1]
925925 %eh_exception.135974.1 = phi i8* [ %eh_ptr1420, %unwind1419 ], [ %eh_exception.185994.1, %cleanup1720 ] ; [#uses=4]
926 %eh_typeid1743 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
926 %eh_typeid1743 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
927927 %tmp1745 = icmp eq i32 %eh_selector.135972.1, %eh_typeid1743 ; [#uses=1]
928928 br i1 %tmp1745, label %eh_then1746, label %cleanup1771
929929
996996
997997 unwind1895: ; preds = %cleanup2300, %cleanup2284, %unwind2274, %cond_next2149, %cond_true1946
998998 %eh_ptr1896 = call i8* @llvm.eh.exception( ) ; [#uses=3]
999 %eh_select1898 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr1896, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
1000 %eh_typeid23196018 = call i32 @llvm.eh.typeid.for( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
999 %eh_select1898 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr1896, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
1000 %eh_typeid23196018 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
10011001 %tmp23216020 = icmp eq i32 %eh_select1898, %eh_typeid23196018 ; [#uses=1]
10021002 br i1 %tmp23216020, label %eh_then2322, label %eh_else2340
10031003
10421042
10431043 unwind2172: ; preds = %invcont2236, %invcont2219, %bb2205, %bb2203, %cond_true2171
10441044 %eh_ptr2173 = call i8* @llvm.eh.exception( ) ; [#uses=5]
1045 %eh_select2175 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr2173, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
1046 %eh_typeid2250 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
1045 %eh_select2175 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2173, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
1046 %eh_typeid2250 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
10471047 %tmp2252 = icmp eq i32 %eh_select2175, %eh_typeid2250 ; [#uses=1]
10481048 br i1 %tmp2252, label %eh_then2253, label %cleanup2284
10491049
10981098
10991099 unwind2257: ; preds = %invcont2263, %invcont2261, %eh_then2253
11001100 %eh_ptr2258 = call i8* @llvm.eh.exception( ) ; [#uses=2]
1101 %eh_select2260 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr2258, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=1]
1101 %eh_select2260 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2258, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=1]
11021102 invoke void @__gnat_end_handler( i8* %eh_ptr2173 )
11031103 to label %cleanup2284 unwind label %unwind2274
11041104
11171117
11181118 unwind2274: ; preds = %cleanup2272, %unwind2257
11191119 %eh_ptr2275 = call i8* @llvm.eh.exception( ) ; [#uses=2]
1120 %eh_select2277 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr2275, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=1]
1120 %eh_select2277 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2275, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=1]
11211121 %tmp229055456023 = ptrtoint i8* %tmp2154 to i32 ; [#uses=1]
11221122 %tmp2290554555466024 = zext i32 %tmp229055456023 to i64 ; [#uses=1]
11231123 %tmp229355426025 = zext i32 %tmp2157 to i64 ; [#uses=1]
11491149 cleanup2318: ; preds = %cleanup2284, %unwind2274
11501150 %eh_selector.246021.1 = phi i32 [ %eh_select2277, %unwind2274 ], [ %eh_selector.24, %cleanup2284 ] ; [#uses=2]
11511151 %eh_exception.266022.1 = phi i8* [ %eh_ptr2275, %unwind2274 ], [ %eh_exception.26, %cleanup2284 ] ; [#uses=2]
1152 %eh_typeid2319 = call i32 @llvm.eh.typeid.for( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
1152 %eh_typeid2319 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
11531153 %tmp2321 = icmp eq i32 %eh_selector.246021.1, %eh_typeid2319 ; [#uses=1]
11541154 br i1 %tmp2321, label %eh_then2322, label %eh_else2340
11551155
11821182 eh_else2340: ; preds = %cleanup2318, %unwind1895
11831183 %eh_selector.196009.1 = phi i32 [ %eh_select1898, %unwind1895 ], [ %eh_selector.246021.1, %cleanup2318 ] ; [#uses=1]
11841184 %eh_exception.216011.1 = phi i8* [ %eh_ptr1896, %unwind1895 ], [ %eh_exception.266022.1, %cleanup2318 ] ; [#uses=4]
1185 %eh_typeid2341 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
1185 %eh_typeid2341 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
11861186 %tmp2343 = icmp eq i32 %eh_selector.196009.1, %eh_typeid2341 ; [#uses=1]
11871187 br i1 %tmp2343, label %eh_then2344, label %cleanup2369
11881188
12231223
12241224 unwind2378: ; preds = %cleanup2371
12251225 %eh_ptr2379 = call i8* @llvm.eh.exception( ) ; [#uses=3]
1226 %eh_select2381 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr2379, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
1227 %eh_typeid26496037 = call i32 @llvm.eh.typeid.for( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
1226 %eh_select2381 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2379, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
1227 %eh_typeid26496037 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
12281228 %tmp26516039 = icmp eq i32 %eh_select2381, %eh_typeid26496037 ; [#uses=1]
12291229 br i1 %tmp26516039, label %eh_then2652, label %eh_else2666
12301230
12491249
12501250 unwind2411: ; preds = %invcont2591, %invcont2574, %bb2560, %bb2558, %bb2524, %bb2506, %cond_true2410
12511251 %eh_ptr2412 = call i8* @llvm.eh.exception( ) ; [#uses=3]
1252 %eh_select2414 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr2412, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
1252 %eh_select2414 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2412, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
12531253 %tmp26315527 = ptrtoint i8* %tmp2386 to i32 ; [#uses=1]
12541254 %tmp263155275528 = zext i32 %tmp26315527 to i64 ; [#uses=1]
12551255 %tmp26345524 = zext i32 %tmp2389 to i64 ; [#uses=1]
13251325
13261326 unwind2618: ; preds = %cleanup2604, %unwind2411
13271327 %eh_ptr2619 = call i8* @llvm.eh.exception( ) ; [#uses=3]
1328 %eh_select2621 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr2619, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
1328 %eh_select2621 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2619, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
13291329 call void @llvm.stackrestore( i8* %tmp2390 )
1330 %eh_typeid26493 = call i32 @llvm.eh.typeid.for( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
1330 %eh_typeid26493 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
13311331 %tmp26514 = icmp eq i32 %eh_select2621, %eh_typeid26493 ; [#uses=1]
13321332 br i1 %tmp26514, label %eh_then2652, label %eh_else2666
13331333
13381338
13391339 cleanup2644: ; preds = %unwind2411
13401340 call void @llvm.stackrestore( i8* %tmp2390 )
1341 %eh_typeid2649 = call i32 @llvm.eh.typeid.for( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
1341 %eh_typeid2649 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
13421342 %tmp2651 = icmp eq i32 %eh_select2414, %eh_typeid2649 ; [#uses=1]
13431343 br i1 %tmp2651, label %eh_then2652, label %eh_else2666
13441344
13661366 eh_else2666: ; preds = %cleanup2644, %unwind2618, %unwind2378
13671367 %eh_selector.256028.1 = phi i32 [ %eh_select2381, %unwind2378 ], [ %eh_select2621, %unwind2618 ], [ %eh_select2414, %cleanup2644 ] ; [#uses=1]
13681368 %eh_exception.296030.1 = phi i8* [ %eh_ptr2379, %unwind2378 ], [ %eh_ptr2619, %unwind2618 ], [ %eh_ptr2412, %cleanup2644 ] ; [#uses=4]
1369 %eh_typeid2667 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
1369 %eh_typeid2667 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
13701370 %tmp2669 = icmp eq i32 %eh_selector.256028.1, %eh_typeid2667 ; [#uses=1]
13711371 br i1 %tmp2669, label %eh_then2670, label %Unwind
13721372
14061406
14071407 unwind2712: ; preds = %cleanup2990, %unwind2975, %cond_true2711
14081408 %eh_ptr2713 = call i8* @llvm.eh.exception( ) ; [#uses=3]
1409 %eh_select2715 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr2713, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
1410 %eh_typeid29996053 = call i32 @llvm.eh.typeid.for( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
1409 %eh_select2715 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2713, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
1410 %eh_typeid29996053 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
14111411 %tmp30016055 = icmp eq i32 %eh_select2715, %eh_typeid29996053 ; [#uses=1]
14121412 br i1 %tmp30016055, label %eh_then3002, label %eh_else3016
14131413
14171417
14181418 unwind2762: ; preds = %cond_next2718
14191419 %eh_ptr2763 = call i8* @llvm.eh.exception( ) ; [#uses=3]
1420 %eh_select2765 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr2763, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
1421 %eh_typeid29686060 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
1420 %eh_select2765 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2763, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
1421 %eh_typeid29686060 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
14221422 %tmp29706061 = icmp eq i32 %eh_select2765, %eh_typeid29686060 ; [#uses=1]
14231423 br i1 %tmp29706061, label %eh_then2971, label %cleanup2998
14241424
14391439
14401440 unwind2822: ; preds = %invcont2910, %invcont2893, %bb2879, %bb2877, %bb2843, %bb2821
14411441 %eh_ptr2823 = call i8* @llvm.eh.exception( ) ; [#uses=3]
1442 %eh_select2825 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr2823, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
1442 %eh_select2825 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2823, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
14431443 %tmp29295521 = ptrtoint i8* %tmp2770 to i32 ; [#uses=1]
14441444 %tmp292955215522 = zext i32 %tmp29295521 to i64 ; [#uses=1]
14451445 %tmp29325518 = zext i32 %tmp2773 to i64 ; [#uses=1]
14961496
14971497 unwind2937: ; preds = %cleanup2943, %unwind2822
14981498 %eh_ptr2938 = call i8* @llvm.eh.exception( ) ; [#uses=3]
1499 %eh_select2940 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr2938, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
1499 %eh_select2940 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2938, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
15001500 call void @llvm.stackrestore( i8* %tmp2774 )
1501 %eh_typeid29685 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
1501 %eh_typeid29685 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
15021502 %tmp29706 = icmp eq i32 %eh_select2940, %eh_typeid29685 ; [#uses=1]
15031503 br i1 %tmp29706, label %eh_then2971, label %cleanup2998
15041504
15201520
15211521 cleanup2963: ; preds = %unwind2822
15221522 call void @llvm.stackrestore( i8* %tmp2774 )
1523 %eh_typeid2968 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
1523 %eh_typeid2968 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
15241524 %tmp2970 = icmp eq i32 %eh_select2825, %eh_typeid2968 ; [#uses=1]
15251525 br i1 %tmp2970, label %eh_then2971, label %cleanup2998
15261526
15311531
15321532 unwind2975: ; preds = %invcont2981, %invcont2979, %eh_then2971
15331533 %eh_ptr2976 = call i8* @llvm.eh.exception( ) ; [#uses=2]
1534 %eh_select2978 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr2976, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=1]
1534 %eh_select2978 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2976, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=1]
15351535 invoke void @__gnat_end_handler( i8* %eh_exception.356056.0 )
15361536 to label %cleanup2998 unwind label %unwind2712
15371537
15511551 cleanup2998: ; preds = %unwind2975, %cleanup2963, %unwind2937, %unwind2762
15521552 %eh_selector.29 = phi i32 [ %eh_select2765, %unwind2762 ], [ %eh_select2940, %unwind2937 ], [ %eh_select2825, %cleanup2963 ], [ %eh_select2978, %unwind2975 ] ; [#uses=2]
15531553 %eh_exception.33 = phi i8* [ %eh_ptr2763, %unwind2762 ], [ %eh_ptr2938, %unwind2937 ], [ %eh_ptr2823, %cleanup2963 ], [ %eh_ptr2976, %unwind2975 ] ; [#uses=2]
1554 %eh_typeid2999 = call i32 @llvm.eh.typeid.for( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
1554 %eh_typeid2999 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
15551555 %tmp3001 = icmp eq i32 %eh_selector.29, %eh_typeid2999 ; [#uses=1]
15561556 br i1 %tmp3001, label %eh_then3002, label %eh_else3016
15571557
15811581 eh_else3016: ; preds = %cleanup2998, %unwind2712
15821582 %eh_selector.296044.1 = phi i32 [ %eh_select2715, %unwind2712 ], [ %eh_selector.29, %cleanup2998 ] ; [#uses=1]
15831583 %eh_exception.336046.1 = phi i8* [ %eh_ptr2713, %unwind2712 ], [ %eh_exception.33, %cleanup2998 ] ; [#uses=4]
1584 %eh_typeid3017 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
1584 %eh_typeid3017 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
15851585 %tmp3019 = icmp eq i32 %eh_selector.296044.1, %eh_typeid3017 ; [#uses=1]
15861586 br i1 %tmp3019, label %eh_then3020, label %Unwind
15871587
16201620
16211621 unwind3062: ; preds = %cleanup3340, %unwind3325, %cond_true3061
16221622 %eh_ptr3063 = call i8* @llvm.eh.exception( ) ; [#uses=3]
1623 %eh_select3065 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr3063, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
1624 %eh_typeid33496081 = call i32 @llvm.eh.typeid.for( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
1623 %eh_select3065 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr3063, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=2]
1624 %eh_typeid33496081 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
16251625 %tmp33516083 = icmp eq i32 %eh_select3065, %eh_typeid33496081 ; [#uses=1]
16261626 br i1 %tmp33516083, label %eh_then3352, label %eh_else3366
16271627
16311631
16321632 unwind3112: ; preds = %cond_next3068
16331633 %eh_ptr3113 = call i8* @llvm.eh.exception( ) ; [#uses=3]
1634 %eh_select3115 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr3113, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
1635 %eh_typeid33186088 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
1634 %eh_select3115 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr3113, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
1635 %eh_typeid33186088 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
16361636 %tmp33206089 = icmp eq i32 %eh_select3115, %eh_typeid33186088 ; [#uses=1]
16371637 br i1 %tmp33206089, label %eh_then3321, label %cleanup3348
16381638
16521652
16531653 unwind3172: ; preds = %invcont3260, %invcont3243, %bb3229, %bb3227, %bb3193, %bb3171
16541654 %eh_ptr3173 = call i8* @llvm.eh.exception( ) ; [#uses=3]
1655 %eh_select3175 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr3173, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
1655 %eh_select3175 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr3173, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
16561656 %tmp32795509 = ptrtoint i8* %tmp3120 to i32 ; [#uses=1]
16571657 %tmp327955095510 = zext i32 %tmp32795509 to i64 ; [#uses=1]
16581658 %tmp32825506 = zext i32 %tmp3123 to i64 ; [#uses=1]
17091709
17101710 unwind3287: ; preds = %cleanup3293, %unwind3172
17111711 %eh_ptr3288 = call i8* @llvm.eh.exception( ) ; [#uses=3]
1712 %eh_select3290 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr3288, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
1712 %eh_select3290 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr3288, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=2]
17131713 call void @llvm.stackrestore( i8* %tmp3124 )
1714 %eh_typeid33187 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
1714 %eh_typeid33187 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
17151715 %tmp33208 = icmp eq i32 %eh_select3290, %eh_typeid33187 ; [#uses=1]
17161716 br i1 %tmp33208, label %eh_then3321, label %cleanup3348
17171717
17301730
17311731 cleanup3313: ; preds = %unwind3172
17321732 call void @llvm.stackrestore( i8* %tmp3124 )
1733 %eh_typeid3318 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
1733 %eh_typeid3318 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
17341734 %tmp3320 = icmp eq i32 %eh_select3175, %eh_typeid3318 ; [#uses=1]
17351735 br i1 %tmp3320, label %eh_then3321, label %cleanup3348
17361736
17411741
17421742 unwind3325: ; preds = %invcont3331, %invcont3329, %eh_then3321
17431743 %eh_ptr3326 = call i8* @llvm.eh.exception( ) ; [#uses=2]
1744 %eh_select3328 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr3326, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=1]
1744 %eh_select3328 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr3326, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; [#uses=1]
17451745 invoke void @__gnat_end_handler( i8* %eh_exception.416084.0 )
17461746 to label %cleanup3348 unwind label %unwind3062
17471747
17611761 cleanup3348: ; preds = %unwind3325, %cleanup3313, %unwind3287, %unwind3112
17621762 %eh_selector.35 = phi i32 [ %eh_select3115, %unwind3112 ], [ %eh_select3290, %unwind3287 ], [ %eh_select3175, %cleanup3313 ], [ %eh_select3328, %unwind3325 ] ; [#uses=2]
17631763 %eh_exception.39 = phi i8* [ %eh_ptr3113, %unwind3112 ], [ %eh_ptr3288, %unwind3287 ], [ %eh_ptr3173, %cleanup3313 ], [ %eh_ptr3326, %unwind3325 ] ; [#uses=2]
1764 %eh_typeid3349 = call i32 @llvm.eh.typeid.for( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
1764 %eh_typeid3349 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; [#uses=1]
17651765 %tmp3351 = icmp eq i32 %eh_selector.35, %eh_typeid3349 ; [#uses=1]
17661766 br i1 %tmp3351, label %eh_then3352, label %eh_else3366
17671767
17881788 eh_else3366: ; preds = %cleanup3348, %unwind3062
17891789 %eh_selector.356072.1 = phi i32 [ %eh_select3065, %unwind3062 ], [ %eh_selector.35, %cleanup3348 ] ; [#uses=1]
17901790 %eh_exception.396074.1 = phi i8* [ %eh_ptr3063, %unwind3062 ], [ %eh_exception.39, %cleanup3348 ] ; [#uses=4]
1791 %eh_typeid3367 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
1791 %eh_typeid3367 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
17921792 %tmp3369 = icmp eq i32 %eh_selector.356072.1, %eh_typeid3367 ; [#uses=1]
17931793 br i1 %tmp3369, label %eh_then3370, label %Unwind
17941794
18221822
18231823 unwind3393: ; preds = %cond_true3555, %cond_true3543, %cond_next3451, %cond_true3448, %cond_true3420, %finally3347
18241824 %eh_ptr3394 = call i8* @llvm.eh.exception( ) ; [#uses=5]
1825 %eh_select3396 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr3394, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
1825 %eh_select3396 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr3394, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
18261826 call void @llvm.stackrestore( i8* %tmp3392 )
1827 %eh_typeid3571 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
1827 %eh_typeid3571 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
18281828 %tmp3573 = icmp eq i32 %eh_select3396, %eh_typeid3571 ; [#uses=1]
18291829 br i1 %tmp3573, label %eh_then3574, label %Unwind
18301830
19171917 %tue.3 = phi i8 [ %tmp204205, %cond_true3617 ], [ %tue.2, %bb3743 ], [ %tue.2, %bb3689 ], [ %tue.1, %bb3635 ], [ %tue.2, %cond_true3675 ], [ %tue.2, %cond_true3729 ] ; [#uses=1]
19181918 %mon.3 = phi i8 [ %tmp170171, %cond_true3617 ], [ %mon.2, %bb3743 ], [ %mon.1, %bb3689 ], [ %tmp170171, %bb3635 ], [ %tmp170171, %cond_true3675 ], [ %mon.2, %cond_true3729 ] ; [#uses=1]
19191919 %eh_ptr3619 = call i8* @llvm.eh.exception( ) ; [#uses=5]
1920 %eh_select3621 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr3619, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
1921 %eh_typeid3854 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
1920 %eh_select3621 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr3619, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
1921 %eh_typeid3854 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
19221922 %tmp3856 = icmp eq i32 %eh_select3621, %eh_typeid3854 ; [#uses=1]
19231923 br i1 %tmp3856, label %eh_then3857, label %Unwind
19241924
20472047
20482048 unwind3880: ; preds = %cond_true4138, %invcont4122, %cond_next4120, %cond_true4117, %cond_true4027, %cond_next3938, %cond_true3935, %cond_true3907, %finally3852
20492049 %eh_ptr3881 = call i8* @llvm.eh.exception( ) ; [#uses=5]
2050 %eh_select3883 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr3881, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
2051 %eh_typeid4149 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
2050 %eh_select3883 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr3881, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
2051 %eh_typeid4149 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
20522052 %tmp4151 = icmp eq i32 %eh_select3883, %eh_typeid4149 ; [#uses=1]
20532053 br i1 %tmp4151, label %eh_then4152, label %Unwind
20542054
21632163
21642164 unwind4175: ; preds = %cond_true4292, %cond_true4187, %finally4147
21652165 %eh_ptr4176 = call i8* @llvm.eh.exception( ) ; [#uses=5]
2166 %eh_select4178 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr4176, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
2167 %eh_typeid4304 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
2166 %eh_select4178 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr4176, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
2167 %eh_typeid4304 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
21682168 %tmp4306 = icmp eq i32 %eh_select4178, %eh_typeid4304 ; [#uses=1]
21692169 br i1 %tmp4306, label %eh_then4307, label %cleanup4334
21702170
22822282
22832283 unwind4453: ; preds = %cond_true4609, %cond_true4504, %cond_true4481
22842284 %eh_ptr4454 = call i8* @llvm.eh.exception( ) ; [#uses=4]
2285 %eh_select4456 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr4454, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
2286 %eh_typeid4710 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
2285 %eh_select4456 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr4454, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
2286 %eh_typeid4710 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
22872287 %tmp4712 = icmp eq i32 %eh_select4456, %eh_typeid4710 ; [#uses=1]
22882288 br i1 %tmp4712, label %eh_then4713, label %cleanup4740
22892289
24482448
24492449 unwind4770: ; preds = %cond_next4776
24502450 %eh_ptr4771 = call i8* @llvm.eh.exception( ) ; [#uses=5]
2451 %eh_select4773 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr4771, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
2451 %eh_select4773 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr4771, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
24522452 call void @llvm.stackrestore( i8* %tmp4749 )
2453 %eh_typeid4874 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
2453 %eh_typeid4874 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
24542454 %tmp4876 = icmp eq i32 %eh_select4773, %eh_typeid4874 ; [#uses=1]
24552455 br i1 %tmp4876, label %eh_then4877, label %Unwind
24562456
25042504 unwind4919: ; preds = %cond_next4925, %cond_true4918
25052505 %tue.96161.2 = phi i8 [ %tue.96161.0, %cond_true4918 ], [ %tue.96161.1, %cond_next4925 ] ; [#uses=1]
25062506 %eh_ptr4920 = call i8* @llvm.eh.exception( ) ; [#uses=5]
2507 %eh_select4922 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr4920, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
2508 %eh_typeid4987 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
2507 %eh_select4922 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr4920, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
2508 %eh_typeid4987 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
25092509 %tmp4989 = icmp eq i32 %eh_select4922, %eh_typeid4987 ; [#uses=1]
25102510 br i1 %tmp4989, label %eh_then4990, label %Unwind
25112511
25722572 %tue.96161.6 = phi i8 [ %tue.96161.4, %cond_true5031 ], [ %tue.96161.5, %cond_next5038 ] ; [#uses=1]
25732573 %mon.86171.2 = phi i8 [ %mon.86171.0, %cond_true5031 ], [ %mon.86171.1, %cond_next5038 ] ; [#uses=1]
25742574 %eh_ptr5033 = call i8* @llvm.eh.exception( ) ; [#uses=5]
2575 %eh_select5035 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr5033, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
2576 %eh_typeid5100 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
2575 %eh_select5035 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr5033, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
2576 %eh_typeid5100 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
25772577 %tmp5102 = icmp eq i32 %eh_select5035, %eh_typeid5100 ; [#uses=1]
25782578 br i1 %tmp5102, label %eh_then5103, label %Unwind
25792579
26522652
26532653 unwind5266: ; preds = %cond_true5462, %invcont5429, %cond_next5401, %cond_true5393, %cond_next5374, %bb5359, %cond_next5347, %invcont5330, %invcont5305, %invcont5303, %invcont5294, %bb5293, %cond_next5281, %cond_next5271, %cond_true5259
26542654 %eh_ptr5267 = call i8* @llvm.eh.exception( ) ; [#uses=5]
2655 %eh_select5269 = call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr5267, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
2656 %eh_typeid5473 = call i32 @llvm.eh.typeid.for( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
2655 %eh_select5269 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr5267, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; [#uses=1]
2656 %eh_typeid5473 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; [#uses=1]
26572657 %tmp5475 = icmp eq i32 %eh_select5269, %eh_typeid5473 ; [#uses=1]
26582658 br i1 %tmp5475, label %eh_then5476, label %Unwind
26592659
28202820
28212821 declare i8* @llvm.eh.exception()
28222822
2823 declare i32 @llvm.eh.selector(i8*, i8*, ...)
2824
2825 declare i32 @llvm.eh.typeid.for(i8*)
2823 declare i32 @llvm.eh.selector.i32(i8*, i8*, ...)
2824
2825 declare i32 @llvm.eh.typeid.for.i32(i8*)
28262826
28272827 declare i32 @__gnat_eh_personality(...)
28282828
1313 to label %return unwind label %unwind10
1414
1515 unwind10: ; preds = %eh_then
16 %eh_select13 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* null, i8* bitcast (void ()* @__gxx_personality_v0 to i8*), i32 1 ) ; [#uses=2]
17 %tmp18 = icmp slt i32 %eh_select13, 0 ; [#uses=1]
16 %eh_select13 = tail call i64 (i8*, i8*, ...)* @llvm.eh.selector.i64( i8* null, i8* bitcast (void ()* @__gxx_personality_v0 to i8*), i32 1 ) ; [#uses=2]
17 %tmp18 = icmp slt i64 %eh_select13, 0 ; [#uses=1]
1818 br i1 %tmp18, label %filter, label %cleanup20
1919
2020 filter: ; preds = %unwind10
2121 unreachable
2222
2323 cleanup20: ; preds = %unwind10, %unwind
24 %eh_selector.0 = phi i32 [ 0, %unwind ], [ %eh_select13, %unwind10 ] ; [#uses=0]
24 %eh_selector.0 = phi i64 [ 0, %unwind ], [ %eh_select13, %unwind10 ] ; [#uses=0]
2525 ret void
2626
2727 return: ; preds = %eh_then, %entry
3030
3131 declare void @_Z1gv()
3232
33 declare i32 @llvm.eh.selector(i8*, i8*, ...)
33 declare i64 @llvm.eh.selector.i64(i8*, i8*, ...)
3434
3535 declare void @__gxx_personality_v0()
3636