summaryrefslogtreecommitdiff
path: root/test/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen')
-rw-r--r--test/CodeGen/ARM/2009-10-30.ll4
-rw-r--r--test/CodeGen/ARM/aliases.ll2
-rw-r--r--test/CodeGen/ARM/align.ll41
-rw-r--r--test/CodeGen/ARM/arm-negative-stride.ll26
-rw-r--r--test/CodeGen/ARM/iabs.ll7
-rw-r--r--test/CodeGen/ARM/long_shift.ll8
-rw-r--r--test/CodeGen/ARM/lsr-code-insertion.ll4
-rw-r--r--test/CodeGen/ARM/remat-2.ll65
-rw-r--r--test/CodeGen/ARM/remat.ll178
-rw-r--r--test/CodeGen/ARM/unaligned_load_store.ll5
-rw-r--r--test/CodeGen/Generic/2006-04-11-vecload.ll12
-rw-r--r--test/CodeGen/Generic/2006-11-06-MemIntrinsicExpand.ll11
-rw-r--r--test/CodeGen/Generic/2007-04-14-BitTestsBadMask.ll160
-rw-r--r--test/CodeGen/Generic/2007-04-27-BitTestsBadMask.ll18
-rw-r--r--test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll2
-rw-r--r--test/CodeGen/Generic/2007-05-05-Personality.ll2
-rw-r--r--test/CodeGen/Generic/2007-06-06-CriticalEdgeLandingPad.ll2870
-rw-r--r--test/CodeGen/Generic/addc-fold2.ll10
-rw-r--r--test/CodeGen/Generic/fpowi-promote.ll1
-rw-r--r--test/CodeGen/Generic/switch-lower-feature-2.ll50
-rw-r--r--test/CodeGen/Generic/switch-lower-feature.ll46
-rw-r--r--test/CodeGen/PowerPC/2007-04-30-InlineAsmEarlyClobber.ll4
-rw-r--r--test/CodeGen/PowerPC/2008-01-25-EmptyFunction.ll2
-rw-r--r--test/CodeGen/PowerPC/2010-02-04-EmptyGlobal.ll11
-rw-r--r--test/CodeGen/PowerPC/2010-02-12-saveCR.ll30
-rw-r--r--test/CodeGen/PowerPC/align.ll49
-rw-r--r--test/CodeGen/SPARC/ctpop.ll6
-rw-r--r--test/CodeGen/Thumb2/2010-02-11-phi-cycle.ll76
-rw-r--r--test/CodeGen/Thumb2/cross-rc-coalescing-2.ll2
-rw-r--r--test/CodeGen/Thumb2/lsr-deficiency.ll18
-rw-r--r--test/CodeGen/Thumb2/thumb2-ifcvt1.ll12
-rw-r--r--test/CodeGen/Thumb2/thumb2-spill-q.ll4
-rw-r--r--test/CodeGen/X86/2006-05-11-InstrSched.ll4
-rw-r--r--test/CodeGen/X86/2006-12-16-InlineAsmCrash.ll (renamed from test/CodeGen/Generic/2006-12-16-InlineAsmCrash.ll)0
-rw-r--r--test/CodeGen/X86/2007-02-23-DAGCombine-Miscompile.ll (renamed from test/CodeGen/Generic/2007-02-23-DAGCombine-Miscompile.ll)0
-rw-r--r--test/CodeGen/X86/2007-03-15-GEP-Idx-Sink.ll2
-rw-r--r--test/CodeGen/X86/2007-10-05-3AddrConvert.ll4
-rw-r--r--test/CodeGen/X86/2007-11-30-LoadFolding-Bug.ll2
-rw-r--r--test/CodeGen/X86/2007-11-30-TestLoadFolding.ll58
-rw-r--r--test/CodeGen/X86/2008-01-25-EmptyFunction.ll2
-rw-r--r--test/CodeGen/X86/2008-07-11-SpillerBug.ll6
-rw-r--r--test/CodeGen/X86/2009-02-07-CoalescerBug.ll491
-rw-r--r--test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll2
-rw-r--r--test/CodeGen/X86/2009-09-07-CoalescerBug.ll2
-rw-r--r--test/CodeGen/X86/2009-09-10-LoadFoldingBug.ll1
-rw-r--r--test/CodeGen/X86/2009-11-04-SubregCoalescingBug.ll2
-rw-r--r--test/CodeGen/X86/2010-02-01-TaillCallCrash.ll12
-rw-r--r--test/CodeGen/X86/2010-02-03-DualUndef.ll27
-rw-r--r--test/CodeGen/X86/2010-02-04-SchedulerBug.ll28
-rw-r--r--test/CodeGen/X86/2010-02-12-CoalescerBug-Impdef.ll260
-rw-r--r--test/CodeGen/X86/2010-02-15-ImplicitDefBug.ll80
-rw-r--r--test/CodeGen/X86/SwitchLowering.ll (renamed from test/CodeGen/Generic/SwitchLowering.ll)0
-rw-r--r--test/CodeGen/X86/add-trick32.ll11
-rw-r--r--test/CodeGen/X86/add-trick64.ll15
-rw-r--r--test/CodeGen/X86/add-with-overflow.ll75
-rw-r--r--test/CodeGen/X86/add.ll94
-rw-r--r--test/CodeGen/X86/addr-label-difference.ll10
-rw-r--r--test/CodeGen/X86/aliases.ll3
-rw-r--r--test/CodeGen/X86/aligned-comm.ll4
-rw-r--r--test/CodeGen/X86/call-push.ll9
-rw-r--r--test/CodeGen/X86/codegen-dce.ll (renamed from test/CodeGen/X86/twoaddr-delete.ll)2
-rw-r--r--test/CodeGen/X86/convert-2-addr-3-addr-inc64.ll9
-rw-r--r--test/CodeGen/X86/dllexport.ll12
-rw-r--r--test/CodeGen/X86/fastcall-correct-mangling.ll4
-rw-r--r--test/CodeGen/X86/full-lsr.ll9
-rw-r--r--test/CodeGen/X86/ins_subreg_coalesce-3.ll2
-rw-r--r--test/CodeGen/X86/iv-users-in-other-loops.ll8
-rw-r--r--test/CodeGen/X86/loop-strength-reduce-2.ll19
-rw-r--r--test/CodeGen/X86/loop-strength-reduce-3.ll13
-rw-r--r--test/CodeGen/X86/loop-strength-reduce.ll13
-rw-r--r--test/CodeGen/X86/loop-strength-reduce4.ll18
-rw-r--r--test/CodeGen/X86/loop-strength-reduce8.ll8
-rw-r--r--test/CodeGen/X86/lsr-reuse-trunc.ll59
-rw-r--r--test/CodeGen/X86/lsr-reuse.ll386
-rw-r--r--test/CodeGen/X86/masked-iv-safe.ll6
-rw-r--r--test/CodeGen/X86/nancvt.ll14
-rw-r--r--test/CodeGen/X86/personality.ll2
-rw-r--r--test/CodeGen/X86/phi-immediate-factoring.ll (renamed from test/CodeGen/Generic/phi-immediate-factoring.ll)0
-rw-r--r--test/CodeGen/X86/phys-reg-local-regalloc.ll2
-rw-r--r--test/CodeGen/X86/pic.ll2
-rw-r--r--test/CodeGen/X86/pr1505b.ll4
-rw-r--r--test/CodeGen/X86/pr3495.ll3
-rw-r--r--test/CodeGen/X86/pre-split8.ll2
-rw-r--r--test/CodeGen/X86/pre-split9.ll2
-rw-r--r--test/CodeGen/X86/ptrtoint-constexpr.ll6
-rw-r--r--test/CodeGen/X86/scalar_widen_div.ll29
-rw-r--r--test/CodeGen/X86/sext-i1.ll63
-rw-r--r--test/CodeGen/X86/sse3.ll6
-rw-r--r--test/CodeGen/X86/stack-color-with-reg.ll2
-rw-r--r--test/CodeGen/X86/stdcall.ll16
-rw-r--r--test/CodeGen/X86/switch-crit-edge-constant.ll (renamed from test/CodeGen/Generic/switch-crit-edge-constant.ll)0
-rw-r--r--test/CodeGen/X86/tailcall1.ll7
-rw-r--r--test/CodeGen/X86/tailcall2.ll197
-rw-r--r--test/CodeGen/X86/tailcallfp2.ll6
-rw-r--r--test/CodeGen/X86/twoaddr-coalesce.ll2
-rw-r--r--test/CodeGen/X86/vsplit-and.ll22
-rw-r--r--test/CodeGen/X86/widen_cast-2.ll6
-rw-r--r--test/CodeGen/X86/widen_load-1.ll2
-rw-r--r--test/CodeGen/X86/widen_load-2.ll155
-rw-r--r--test/CodeGen/X86/zext-trunc.ll13
-rw-r--r--test/CodeGen/XCore/ashr.ll2
101 files changed, 1956 insertions, 4117 deletions
diff --git a/test/CodeGen/ARM/2009-10-30.ll b/test/CodeGen/ARM/2009-10-30.ll
index 82563869bd968..90a5bd2a75798 100644
--- a/test/CodeGen/ARM/2009-10-30.ll
+++ b/test/CodeGen/ARM/2009-10-30.ll
@@ -5,8 +5,8 @@
define void @f(i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, ...) {
entry:
;CHECK: sub sp, sp, #4
-;CHECK: add r0, sp, #8
-;CHECK: str r0, [sp], #+4
+;CHECK: add r{{[0-9]+}}, sp, #8
+;CHECK: str r{{[0-9]+}}, [sp], #+4
;CHECK: bx lr
%ap = alloca i8*, align 4
%ap1 = bitcast i8** %ap to i8*
diff --git a/test/CodeGen/ARM/aliases.ll b/test/CodeGen/ARM/aliases.ll
index b2c03147740ba..31c500756c4ed 100644
--- a/test/CodeGen/ARM/aliases.ll
+++ b/test/CodeGen/ARM/aliases.ll
@@ -1,5 +1,5 @@
; RUN: llc < %s -mtriple=arm-linux-gnueabi -o %t
-; RUN: grep set %t | count 5
+; RUN: grep { = } %t | count 5
; RUN: grep globl %t | count 4
; RUN: grep weak %t | count 1
diff --git a/test/CodeGen/ARM/align.ll b/test/CodeGen/ARM/align.ll
index d73abe6a560c3..d4d01288f29bf 100644
--- a/test/CodeGen/ARM/align.ll
+++ b/test/CodeGen/ARM/align.ll
@@ -1,15 +1,42 @@
-; RUN: llc < %s -march=arm | grep align.*1 | count 1
-; RUN: llc < %s -mtriple=arm-linux-gnueabi | \
-; RUN: grep align.*2 | count 2
-; RUN: llc < %s -mtriple=arm-linux-gnueabi | \
-; RUN: grep align.*3 | count 2
-; RUN: llc < %s -mtriple=arm-apple-darwin | \
-; RUN: grep align.*2 | count 4
+; RUN: llc < %s -mtriple=arm-linux-gnueabi | FileCheck %s -check-prefix=ELF
+; RUN: llc < %s -mtriple=arm-apple-darwin | FileCheck %s -check-prefix=DARWIN
@a = global i1 true
+; no alignment
+
@b = global i8 1
+; no alignment
+
@c = global i16 2
+;ELF: .align 1
+;ELF: c:
+;DARWIN: .align 1
+;DARWIN: _c:
+
@d = global i32 3
+;ELF: .align 2
+;ELF: d:
+;DARWIN: .align 2
+;DARWIN: _d:
+
@e = global i64 4
+;ELF: .align 3
+;ELF: e
+;DARWIN: .align 2
+;DARWIN: _e:
+
@f = global float 5.0
+;ELF: .align 2
+;ELF: f:
+;DARWIN: .align 2
+;DARWIN: _f:
+
@g = global double 6.0
+;ELF: .align 3
+;ELF: g:
+;DARWIN: .align 2
+;DARWIN: _g:
+
+@bar = common global [75 x i8] zeroinitializer, align 128
+;ELF: .comm bar,75,128
+;DARWIN: .comm _bar,75,7
diff --git a/test/CodeGen/ARM/arm-negative-stride.ll b/test/CodeGen/ARM/arm-negative-stride.ll
index 72ec8efcc4459..52ab8717c15fe 100644
--- a/test/CodeGen/ARM/arm-negative-stride.ll
+++ b/test/CodeGen/ARM/arm-negative-stride.ll
@@ -1,7 +1,32 @@
; RUN: llc < %s -march=arm | FileCheck %s
+; This loop is rewritten with an indvar which counts down, which
+; frees up a register from holding the trip count.
+
define void @test(i32* %P, i32 %A, i32 %i) nounwind {
entry:
+; CHECK: str r1, [{{r.*}}, +{{r.*}}, lsl #2]
+ icmp eq i32 %i, 0 ; <i1>:0 [#uses=1]
+ br i1 %0, label %return, label %bb
+
+bb: ; preds = %bb, %entry
+ %indvar = phi i32 [ 0, %entry ], [ %indvar.next, %bb ] ; <i32> [#uses=2]
+ %i_addr.09.0 = sub i32 %i, %indvar ; <i32> [#uses=1]
+ %tmp2 = getelementptr i32* %P, i32 %i_addr.09.0 ; <i32*> [#uses=1]
+ store i32 %A, i32* %tmp2
+ %indvar.next = add i32 %indvar, 1 ; <i32> [#uses=2]
+ icmp eq i32 %indvar.next, %i ; <i1>:1 [#uses=1]
+ br i1 %1, label %return, label %bb
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; This loop has a non-address use of the count-up indvar, so
+; it'll remain. Now the original store uses a negative-stride address.
+
+define void @test_with_forced_iv(i32* %P, i32 %A, i32 %i) nounwind {
+entry:
; CHECK: str r1, [{{r.*}}, -{{r.*}}, lsl #2]
icmp eq i32 %i, 0 ; <i1>:0 [#uses=1]
br i1 %0, label %return, label %bb
@@ -11,6 +36,7 @@ bb: ; preds = %bb, %entry
%i_addr.09.0 = sub i32 %i, %indvar ; <i32> [#uses=1]
%tmp2 = getelementptr i32* %P, i32 %i_addr.09.0 ; <i32*> [#uses=1]
store i32 %A, i32* %tmp2
+ store i32 %indvar, i32* null
%indvar.next = add i32 %indvar, 1 ; <i32> [#uses=2]
icmp eq i32 %indvar.next, %i ; <i1>:1 [#uses=1]
br i1 %1, label %return, label %bb
diff --git a/test/CodeGen/ARM/iabs.ll b/test/CodeGen/ARM/iabs.ll
index 1054f27dbe302..63808b238bff9 100644
--- a/test/CodeGen/ARM/iabs.ll
+++ b/test/CodeGen/ARM/iabs.ll
@@ -1,5 +1,4 @@
-; RUN: llc < %s -march=arm -stats |& \
-; RUN: grep {3 .*Number of machine instrs printed}
+; RUN: llc < %s -march=arm | FileCheck %s
;; Integer absolute value, should produce something as good as: ARM:
;; add r3, r0, r0, asr #31
@@ -11,5 +10,7 @@ define i32 @test(i32 %a) {
%b = icmp sgt i32 %a, -1
%abs = select i1 %b, i32 %a, i32 %tmp1neg
ret i32 %abs
+; CHECK: add r1, r0, r0, asr #31
+; CHECK: eor r0, r1, r0, asr #31
+; CHECK: bx lr
}
-
diff --git a/test/CodeGen/ARM/long_shift.ll b/test/CodeGen/ARM/long_shift.ll
index 688b7bc312c7b..76332cc290ccf 100644
--- a/test/CodeGen/ARM/long_shift.ll
+++ b/test/CodeGen/ARM/long_shift.ll
@@ -23,10 +23,10 @@ define i32 @f1(i64 %x, i64 %y) {
define i32 @f2(i64 %x, i64 %y) {
; CHECK: f2
; CHECK: mov r0, r0, lsr r2
-; CHECK-NEXT: rsb r3, r2, #32
+; CHECK-NEXT: rsb r12, r2, #32
; CHECK-NEXT: sub r2, r2, #32
; CHECK-NEXT: cmp r2, #0
-; CHECK-NEXT: orr r0, r0, r1, lsl r3
+; CHECK-NEXT: orr r0, r0, r1, lsl r12
; CHECK-NEXT: movge r0, r1, asr r2
%a = ashr i64 %x, %y
%b = trunc i64 %a to i32
@@ -36,10 +36,10 @@ define i32 @f2(i64 %x, i64 %y) {
define i32 @f3(i64 %x, i64 %y) {
; CHECK: f3
; CHECK: mov r0, r0, lsr r2
-; CHECK-NEXT: rsb r3, r2, #32
+; CHECK-NEXT: rsb r12, r2, #32
; CHECK-NEXT: sub r2, r2, #32
; CHECK-NEXT: cmp r2, #0
-; CHECK-NEXT: orr r0, r0, r1, lsl r3
+; CHECK-NEXT: orr r0, r0, r1, lsl r12
; CHECK-NEXT: movge r0, r1, lsr r2
%a = lshr i64 %x, %y
%b = trunc i64 %a to i32
diff --git a/test/CodeGen/ARM/lsr-code-insertion.ll b/test/CodeGen/ARM/lsr-code-insertion.ll
index 507ec2c7bd3e2..1bbb96deeefef 100644
--- a/test/CodeGen/ARM/lsr-code-insertion.ll
+++ b/test/CodeGen/ARM/lsr-code-insertion.ll
@@ -1,5 +1,5 @@
-; RUN: llc < %s -stats |& grep {40.*Number of machine instrs printed}
-; RUN: llc < %s -stats |& grep {.*Number of re-materialization}
+; RUN: llc < %s -stats |& grep {39.*Number of machine instrs printed}
+; RUN: llc < %s -stats |& not grep {.*Number of re-materialization}
; This test really wants to check that the resultant "cond_true" block only
; has a single store in it, and that cond_true55 only has code to materialize
; the constant and do a store. We do *not* want something like this:
diff --git a/test/CodeGen/ARM/remat-2.ll b/test/CodeGen/ARM/remat-2.ll
deleted file mode 100644
index 1a871d258e307..0000000000000
--- a/test/CodeGen/ARM/remat-2.ll
+++ /dev/null
@@ -1,65 +0,0 @@
-; RUN: llc < %s -march=arm -mattr=+v6,+vfp2 -stats -info-output-file - | grep "Number of re-materialization"
-
-define arm_apcscc i32 @main(i32 %argc, i8** nocapture %argv) nounwind {
-entry:
- br i1 undef, label %smvp.exit, label %bb.i3
-
-bb.i3: ; preds = %bb.i3, %bb134
- br i1 undef, label %smvp.exit, label %bb.i3
-
-smvp.exit: ; preds = %bb.i3
- %0 = fmul double undef, 2.400000e-03 ; <double> [#uses=2]
- br i1 undef, label %bb138.preheader, label %bb159
-
-bb138.preheader: ; preds = %smvp.exit
- br label %bb138
-
-bb138: ; preds = %bb138, %bb138.preheader
- br i1 undef, label %bb138, label %bb145.loopexit
-
-bb142: ; preds = %bb.nph218.bb.nph218.split_crit_edge, %phi0.exit
- %1 = fmul double undef, -1.200000e-03 ; <double> [#uses=1]
- %2 = fadd double undef, %1 ; <double> [#uses=1]
- %3 = fmul double %2, undef ; <double> [#uses=1]
- %4 = fsub double 0.000000e+00, %3 ; <double> [#uses=1]
- br i1 %14, label %phi1.exit, label %bb.i35
-
-bb.i35: ; preds = %bb142
- %5 = call arm_apcscc double @sin(double %15) nounwind readonly ; <double> [#uses=1]
- %6 = fmul double %5, 0x4031740AFA84AD8A ; <double> [#uses=1]
- %7 = fsub double 1.000000e+00, undef ; <double> [#uses=1]
- %8 = fdiv double %7, 6.000000e-01 ; <double> [#uses=1]
- br label %phi1.exit
-
-phi1.exit: ; preds = %bb.i35, %bb142
- %.pn = phi double [ %6, %bb.i35 ], [ 0.000000e+00, %bb142 ] ; <double> [#uses=0]
- %9 = phi double [ %8, %bb.i35 ], [ 0.000000e+00, %bb142 ] ; <double> [#uses=1]
- %10 = fmul double undef, %9 ; <double> [#uses=0]
- br i1 %14, label %phi0.exit, label %bb.i
-
-bb.i: ; preds = %phi1.exit
- unreachable
-
-phi0.exit: ; preds = %phi1.exit
- %11 = fsub double %4, undef ; <double> [#uses=1]
- %12 = fadd double 0.000000e+00, %11 ; <double> [#uses=1]
- store double %12, double* undef, align 4
- br label %bb142
-
-bb145.loopexit: ; preds = %bb138
- br i1 undef, label %bb.nph218.bb.nph218.split_crit_edge, label %bb159
-
-bb.nph218.bb.nph218.split_crit_edge: ; preds = %bb145.loopexit
- %13 = fmul double %0, 0x401921FB54442D18 ; <double> [#uses=1]
- %14 = fcmp ugt double %0, 6.000000e-01 ; <i1> [#uses=2]
- %15 = fdiv double %13, 6.000000e-01 ; <double> [#uses=1]
- br label %bb142
-
-bb159: ; preds = %bb145.loopexit, %smvp.exit, %bb134
- unreachable
-
-bb166: ; preds = %bb127
- unreachable
-}
-
-declare arm_apcscc double @sin(double) nounwind readonly
diff --git a/test/CodeGen/ARM/remat.ll b/test/CodeGen/ARM/remat.ll
index 9565c8bca6b04..92c1cf1821591 100644
--- a/test/CodeGen/ARM/remat.ll
+++ b/test/CodeGen/ARM/remat.ll
@@ -1,119 +1,65 @@
-; RUN: llc < %s -mtriple=arm-apple-darwin
-; RUN: llc < %s -mtriple=arm-apple-darwin -stats -info-output-file - | grep "Number of re-materialization" | grep 3
+; RUN: llc < %s -march=arm -mattr=+v6,+vfp2 -stats -info-output-file - | grep "Number of re-materialization"
- %struct.CONTENTBOX = type { i32, i32, i32, i32, i32 }
- %struct.LOCBOX = type { i32, i32, i32, i32 }
- %struct.SIDEBOX = type { i32, i32 }
- %struct.UNCOMBOX = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
- %struct.cellbox = type { i8*, i32, i32, i32, [9 x i32], i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, i32, i32, %struct.CONTENTBOX*, %struct.UNCOMBOX*, [8 x %struct.tilebox*], %struct.SIDEBOX* }
- %struct.termbox = type { %struct.termbox*, i32, i32, i32, i32, i32 }
- %struct.tilebox = type { %struct.tilebox*, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.termbox*, %struct.LOCBOX* }
-@numcells = external global i32 ; <i32*> [#uses=1]
-@cellarray = external global %struct.cellbox** ; <%struct.cellbox***> [#uses=1]
-@numBinsY = external global i32 ; <i32*> [#uses=1]
-
-define fastcc void @fixpenal() {
+define arm_apcscc i32 @main(i32 %argc, i8** nocapture %argv, double %d1, double %d2) nounwind {
entry:
- %tmp491 = load i32* @numcells, align 4 ; <i32> [#uses=1]
- %tmp9 = load %struct.cellbox*** @cellarray, align 4 ; <%struct.cellbox**> [#uses=1]
- %tmp77.i = load i32* @numBinsY, align 4 ; <i32> [#uses=2]
- br label %bb490
-
-bb8: ; preds = %bb490, %cond_false428
- %foo3 = phi i1 [ 0, %bb490 ], [ 1, %cond_false428 ]
- br i1 %foo3, label %cond_false58.i, label %cond_false.i
-
-cond_false.i: ; preds = %bb8
- ret void
-
-cond_false58.i: ; preds = %bb8
- %highBinX.0.i = select i1 false, i32 1, i32 0 ; <i32> [#uses=2]
- br i1 %foo3, label %cond_next85.i, label %cond_false76.i
-
-cond_false76.i: ; preds = %cond_false58.i
- ret void
-
-cond_next85.i: ; preds = %cond_false58.i
- br i1 %foo3, label %cond_next105.i, label %cond_false98.i
-
-cond_false98.i: ; preds = %cond_next85.i
- ret void
-
-cond_next105.i: ; preds = %cond_next85.i
- %tmp108.i = icmp eq i32 1, %highBinX.0.i ; <i1> [#uses=1]
- %tmp115.i = icmp eq i32 1, %tmp77.i ; <i1> [#uses=1]
- %bothcond.i = and i1 %tmp115.i, %tmp108.i ; <i1> [#uses=1]
- %storemerge.i = select i1 %bothcond.i, i32 1, i32 0 ; <i32> [#uses=2]
- br i1 %bothcond.i, label %whoOverlaps.exit, label %bb503.preheader.i
-
-bb503.preheader.i: ; preds = %bb513.i, %cond_next105.i
- %i.022.0.i = phi i32 [ %tmp512.i, %bb513.i ], [ 0, %cond_next105.i ] ; <i32> [#uses=2]
- %tmp165.i = getelementptr i32*** null, i32 %i.022.0.i ; <i32***> [#uses=0]
- br label %bb503.i
-
-bb137.i: ; preds = %bb503.i
- br i1 %tmp506.i, label %bb162.i, label %bb148.i
-
-bb148.i: ; preds = %bb137.i
- ret void
-
-bb162.i: ; preds = %bb137.i
- %tmp49435.i = load i32* null ; <i32> [#uses=1]
- br label %bb170.i
-
-bb170.i: ; preds = %bb491.i, %bb162.i
- %indvar.i = phi i32 [ %k.032.0.i, %bb491.i ], [ 0, %bb162.i ] ; <i32> [#uses=2]
- %k.032.0.i = add i32 %indvar.i, 1 ; <i32> [#uses=2]
- %tmp173.i = getelementptr i32* null, i32 %k.032.0.i ; <i32*> [#uses=1]
- %tmp174.i = load i32* %tmp173.i ; <i32> [#uses=4]
- %tmp177.i = icmp eq i32 %tmp174.i, %cell.1 ; <i1> [#uses=1]
- %tmp184.i = icmp sgt i32 %tmp174.i, %tmp491 ; <i1> [#uses=1]
- %bothcond = or i1 %tmp177.i, %tmp184.i ; <i1> [#uses=1]
- br i1 %bothcond, label %bb491.i, label %cond_next188.i
-
-cond_next188.i: ; preds = %bb170.i
- %tmp191.i = getelementptr %struct.cellbox** %tmp9, i32 %tmp174.i ; <%struct.cellbox**> [#uses=1]
- %tmp192.i = load %struct.cellbox** %tmp191.i ; <%struct.cellbox*> [#uses=1]
- %tmp195.i = icmp eq i32 %tmp174.i, 0 ; <i1> [#uses=1]
- br i1 %tmp195.i, label %bb491.i, label %cond_true198.i
-
-cond_true198.i: ; preds = %cond_next188.i
- %tmp210.i = getelementptr %struct.cellbox* %tmp192.i, i32 0, i32 3 ; <i32*> [#uses=0]
- ret void
-
-bb491.i: ; preds = %cond_next188.i, %bb170.i
- %tmp490.i = add i32 %indvar.i, 2 ; <i32> [#uses=1]
- %tmp496.i = icmp slt i32 %tmp49435.i, %tmp490.i ; <i1> [#uses=1]
- br i1 %tmp496.i, label %bb500.i, label %bb170.i
-
-bb500.i: ; preds = %bb491.i
- %indvar.next82.i = add i32 %j.0.i, 1 ; <i32> [#uses=1]
- br label %bb503.i
-
-bb503.i: ; preds = %bb500.i, %bb503.preheader.i
- %j.0.i = phi i32 [ 0, %bb503.preheader.i ], [ %indvar.next82.i, %bb500.i ] ; <i32> [#uses=2]
- %tmp506.i = icmp sgt i32 %j.0.i, %tmp77.i ; <i1> [#uses=1]
- br i1 %tmp506.i, label %bb513.i, label %bb137.i
-
-bb513.i: ; preds = %bb503.i
- %tmp512.i = add i32 %i.022.0.i, 1 ; <i32> [#uses=2]
- %tmp516.i = icmp sgt i32 %tmp512.i, %highBinX.0.i ; <i1> [#uses=1]
- br i1 %tmp516.i, label %whoOverlaps.exit, label %bb503.preheader.i
-
-whoOverlaps.exit: ; preds = %bb513.i, %cond_next105.i
- %foo = phi i1 [ 1, %bb513.i], [0, %cond_next105.i]
- br i1 %foo, label %cond_false428, label %bb490
-
-cond_false428: ; preds = %whoOverlaps.exit
- br i1 %foo, label %bb497, label %bb8
-
-bb490: ; preds = %whoOverlaps.exit, %entry
- %binY.tmp.2 = phi i32 [ 0, %entry ], [ %storemerge.i, %whoOverlaps.exit ] ; <i32> [#uses=1]
- %cell.1 = phi i32 [ 1, %entry ], [ 0, %whoOverlaps.exit ] ; <i32> [#uses=1]
- %foo2 = phi i1 [ 1, %entry], [0, %whoOverlaps.exit]
- br i1 %foo2, label %bb497, label %bb8
-
-bb497: ; preds = %bb490, %cond_false428
- %binY.tmp.3 = phi i32 [ %binY.tmp.2, %bb490 ], [ %storemerge.i, %cond_false428 ] ; <i32> [#uses=0]
- ret void
+ br i1 undef, label %smvp.exit, label %bb.i3
+
+bb.i3: ; preds = %bb.i3, %bb134
+ br i1 undef, label %smvp.exit, label %bb.i3
+
+smvp.exit: ; preds = %bb.i3
+ %0 = fmul double %d1, 2.400000e-03 ; <double> [#uses=2]
+ br i1 undef, label %bb138.preheader, label %bb159
+
+bb138.preheader: ; preds = %smvp.exit
+ br label %bb138
+
+bb138: ; preds = %bb138, %bb138.preheader
+ br i1 undef, label %bb138, label %bb145.loopexit
+
+bb142: ; preds = %bb.nph218.bb.nph218.split_crit_edge, %phi0.exit
+ %1 = fmul double %d1, -1.200000e-03 ; <double> [#uses=1]
+ %2 = fadd double %d2, %1 ; <double> [#uses=1]
+ %3 = fmul double %2, %d2 ; <double> [#uses=1]
+ %4 = fsub double 0.000000e+00, %3 ; <double> [#uses=1]
+ br i1 %14, label %phi1.exit, label %bb.i35
+
+bb.i35: ; preds = %bb142
+ %5 = call arm_apcscc double @sin(double %15) nounwind readonly ; <double> [#uses=1]
+ %6 = fmul double %5, 0x4031740AFA84AD8A ; <double> [#uses=1]
+ %7 = fsub double 1.000000e+00, undef ; <double> [#uses=1]
+ %8 = fdiv double %7, 6.000000e-01 ; <double> [#uses=1]
+ br label %phi1.exit
+
+phi1.exit: ; preds = %bb.i35, %bb142
+ %.pn = phi double [ %6, %bb.i35 ], [ 0.000000e+00, %bb142 ] ; <double> [#uses=1]
+ %9 = phi double [ %8, %bb.i35 ], [ 0.000000e+00, %bb142 ] ; <double> [#uses=1]
+ %10 = fmul double %.pn, %9 ; <double> [#uses=1]
+ br i1 %14, label %phi0.exit, label %bb.i
+
+bb.i: ; preds = %phi1.exit
+ unreachable
+
+phi0.exit: ; preds = %phi1.exit
+ %11 = fsub double %4, %10 ; <double> [#uses=1]
+ %12 = fadd double 0.000000e+00, %11 ; <double> [#uses=1]
+ store double %12, double* undef, align 4
+ br label %bb142
+
+bb145.loopexit: ; preds = %bb138
+ br i1 undef, label %bb.nph218.bb.nph218.split_crit_edge, label %bb159
+
+bb.nph218.bb.nph218.split_crit_edge: ; preds = %bb145.loopexit
+ %13 = fmul double %0, 0x401921FB54442D18 ; <double> [#uses=1]
+ %14 = fcmp ugt double %0, 6.000000e-01 ; <i1> [#uses=2]
+ %15 = fdiv double %13, 6.000000e-01 ; <double> [#uses=1]
+ br label %bb142
+
+bb159: ; preds = %bb145.loopexit, %smvp.exit, %bb134
+ unreachable
+
+bb166: ; preds = %bb127
+ unreachable
}
+
+declare arm_apcscc double @sin(double) nounwind readonly
diff --git a/test/CodeGen/ARM/unaligned_load_store.ll b/test/CodeGen/ARM/unaligned_load_store.ll
index fcaa2b3103e93..a4494f3705588 100644
--- a/test/CodeGen/ARM/unaligned_load_store.ll
+++ b/test/CodeGen/ARM/unaligned_load_store.ll
@@ -1,6 +1,6 @@
; RUN: llc < %s -march=arm | FileCheck %s -check-prefix=GENERIC
; RUN: llc < %s -mtriple=armv6-apple-darwin | FileCheck %s -check-prefix=DARWIN_V6
-; RUN: llc < %s -march=arm -mattr=+v7a | FileCheck %s -check-prefix=V7
+; RUN: llc < %s -mtriple=armv6-linux | FileCheck %s -check-prefix=GENERIC
; rdar://7113725
@@ -20,9 +20,6 @@ entry:
; DARWIN_V6: ldr r1
; DARWIN_V6: str r1
-; V7: t:
-; V7: ldr r1
-; V7: str r1
%__src1.i = bitcast i8* %b to i32* ; <i32*> [#uses=1]
%__dest2.i = bitcast i8* %a to i32* ; <i32*> [#uses=1]
%tmp.i = load i32* %__src1.i, align 1 ; <i32> [#uses=1]
diff --git a/test/CodeGen/Generic/2006-04-11-vecload.ll b/test/CodeGen/Generic/2006-04-11-vecload.ll
deleted file mode 100644
index a68ed838c24fd..0000000000000
--- a/test/CodeGen/Generic/2006-04-11-vecload.ll
+++ /dev/null
@@ -1,12 +0,0 @@
-; RUN: llc < %s -march=x86 -mcpu=yonah
-
-; The vload was getting memoized to the previous scalar load!
-
-define void @VertexProgram2() {
- %xFloat0.688 = load float* null ; <float> [#uses=0]
- %loadVector37.712 = load <4 x float>* null ; <<4 x float>> [#uses=1]
- %inFloat3.713 = insertelement <4 x float> %loadVector37.712, float 0.000000e+00, i32 3 ; <<4 x float>> [#uses=1]
- store <4 x float> %inFloat3.713, <4 x float>* null
- unreachable
-}
-
diff --git a/test/CodeGen/Generic/2006-11-06-MemIntrinsicExpand.ll b/test/CodeGen/Generic/2006-11-06-MemIntrinsicExpand.ll
deleted file mode 100644
index ad3e49f8f9224..0000000000000
--- a/test/CodeGen/Generic/2006-11-06-MemIntrinsicExpand.ll
+++ /dev/null
@@ -1,11 +0,0 @@
-; RUN: llc < %s -march=x86 | not grep adc
-; PR987
-
-declare void @llvm.memcpy.i64(i8*, i8*, i64, i32)
-
-define void @foo(i64 %a) {
- %b = add i64 %a, 1 ; <i64> [#uses=1]
- call void @llvm.memcpy.i64( i8* null, i8* null, i64 %b, i32 1 )
- ret void
-}
-
diff --git a/test/CodeGen/Generic/2007-04-14-BitTestsBadMask.ll b/test/CodeGen/Generic/2007-04-14-BitTestsBadMask.ll
deleted file mode 100644
index 00337b930145f..0000000000000
--- a/test/CodeGen/Generic/2007-04-14-BitTestsBadMask.ll
+++ /dev/null
@@ -1,160 +0,0 @@
-; RUN: llc < %s -march=x86 | grep 8388635
-; RUN: llc < %s -march=x86-64 | grep 4294981120
-; PR 1325
-
-; ModuleID = 'bugpoint.test.bc'
-target datalayout = "E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64"
-target triple = "powerpc-apple-darwin8.8.0"
-;target triple = "i686-linux-gnu"
- %struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
- %struct.__sFILEX = type opaque
- %struct.__sbuf = type { i8*, i32 }
-@PL_rsfp = external global %struct.FILE* ; <%struct.FILE**> [#uses=1]
-@PL_bufend = external global i8* ; <i8**> [#uses=1]
-@PL_in_eval = external global i32 ; <i32*> [#uses=1]
-
-declare fastcc void @incline(i8*)
-
-define i16 @Perl_skipspace_bb60(i8* %s, i8** %s_addr.4.out) {
-newFuncRoot:
- %tmp138.loc = alloca i8* ; <i8**> [#uses=2]
- %s_addr.4.loc = alloca i8* ; <i8**> [#uses=2]
- %tmp274.loc = alloca i8* ; <i8**> [#uses=2]
- br label %bb60
-
-cond_next154.UnifiedReturnBlock_crit_edge.exitStub: ; preds = %codeRepl
- store i8* %s_addr.4.reload, i8** %s_addr.4.out
- ret i16 0
-
-cond_next161.UnifiedReturnBlock_crit_edge.exitStub: ; preds = %codeRepl
- store i8* %s_addr.4.reload, i8** %s_addr.4.out
- ret i16 1
-
-cond_next167.UnifiedReturnBlock_crit_edge.exitStub: ; preds = %codeRepl
- store i8* %s_addr.4.reload, i8** %s_addr.4.out
- ret i16 2
-
-cond_false29.i.cond_true190_crit_edge.exitStub: ; preds = %codeRepl
- store i8* %s_addr.4.reload, i8** %s_addr.4.out
- ret i16 3
-
-cond_next.i.cond_true190_crit_edge.exitStub: ; preds = %codeRepl
- store i8* %s_addr.4.reload, i8** %s_addr.4.out
- ret i16 4
-
-cond_true19.i.cond_true190_crit_edge.exitStub: ; preds = %codeRepl
- store i8* %s_addr.4.reload, i8** %s_addr.4.out
- ret i16 5
-
-bb60: ; preds = %bb60.backedge, %newFuncRoot
- %s_addr.2 = phi i8* [ %s, %newFuncRoot ], [ %s_addr.2.be, %bb60.backedge ] ; <i8*> [#uses=3]
- %tmp61 = load i8** @PL_bufend ; <i8*> [#uses=1]
- %tmp63 = icmp ult i8* %s_addr.2, %tmp61 ; <i1> [#uses=1]
- br i1 %tmp63, label %bb60.cond_next67_crit_edge, label %bb60.bb101_crit_edge
-
-bb37: ; preds = %cond_next67.bb37_crit_edge5, %cond_next67.bb37_crit_edge4, %cond_next67.bb37_crit_edge3, %cond_next67.bb37_crit_edge2, %cond_next67.bb37_crit_edge
- %tmp40 = icmp eq i8 %tmp69, 10 ; <i1> [#uses=1]
- %tmp43 = getelementptr i8* %s_addr.27.2, i32 1 ; <i8*> [#uses=5]
- br i1 %tmp40, label %cond_true45, label %bb37.bb60_crit_edge
-
-cond_true45: ; preds = %bb37
- %tmp46 = volatile load i32* @PL_in_eval ; <i32> [#uses=1]
- %tmp47 = icmp eq i32 %tmp46, 0 ; <i1> [#uses=1]
- br i1 %tmp47, label %cond_true45.bb60_crit_edge, label %cond_true50
-
-cond_true50: ; preds = %cond_true45
- %tmp51 = volatile load %struct.FILE** @PL_rsfp ; <%struct.FILE*> [#uses=1]
- %tmp52 = icmp eq %struct.FILE* %tmp51, null ; <i1> [#uses=1]
- br i1 %tmp52, label %cond_true55, label %cond_true50.bb60_crit_edge
-
-cond_true55: ; preds = %cond_true50
- tail call fastcc void @incline( i8* %tmp43 )
- br label %bb60.backedge
-
-cond_next67: ; preds = %Perl_newSV.exit.cond_next67_crit_edge, %cond_true148.cond_next67_crit_edge, %bb60.cond_next67_crit_edge
- %s_addr.27.2 = phi i8* [ %s_addr.2, %bb60.cond_next67_crit_edge ], [ %tmp274.reload, %Perl_newSV.exit.cond_next67_crit_edge ], [ %tmp138.reload, %cond_true148.cond_next67_crit_edge ] ; <i8*> [#uses=3]
- %tmp69 = load i8* %s_addr.27.2 ; <i8> [#uses=2]
- switch i8 %tmp69, label %cond_next67.bb101_crit_edge [
- i8 32, label %cond_next67.bb37_crit_edge
- i8 9, label %cond_next67.bb37_crit_edge2
- i8 10, label %cond_next67.bb37_crit_edge3
- i8 13, label %cond_next67.bb37_crit_edge4
- i8 12, label %cond_next67.bb37_crit_edge5
- ]
-
-codeRepl: ; preds = %bb101.preheader
- %targetBlock = call i16 @Perl_skipspace_bb60_bb101( i8* %s_addr.27.3.ph, i8** %tmp274.loc, i8** %s_addr.4.loc, i8** %tmp138.loc ) ; <i16> [#uses=1]
- %tmp274.reload = load i8** %tmp274.loc ; <i8*> [#uses=4]
- %s_addr.4.reload = load i8** %s_addr.4.loc ; <i8*> [#uses=6]
- %tmp138.reload = load i8** %tmp138.loc ; <i8*> [#uses=1]
- switch i16 %targetBlock, label %cond_true19.i.cond_true190_crit_edge.exitStub [
- i16 0, label %cond_next271.bb60_crit_edge
- i16 1, label %cond_true290.bb60_crit_edge
- i16 2, label %cond_true295.bb60_crit_edge
- i16 3, label %Perl_newSV.exit.cond_next67_crit_edge
- i16 4, label %cond_true148.cond_next67_crit_edge
- i16 5, label %cond_next154.UnifiedReturnBlock_crit_edge.exitStub
- i16 6, label %cond_next161.UnifiedReturnBlock_crit_edge.exitStub
- i16 7, label %cond_next167.UnifiedReturnBlock_crit_edge.exitStub
- i16 8, label %cond_false29.i.cond_true190_crit_edge.exitStub
- i16 9, label %cond_next.i.cond_true190_crit_edge.exitStub
- ]
-
-bb37.bb60_crit_edge: ; preds = %bb37
- br label %bb60.backedge
-
-cond_true45.bb60_crit_edge: ; preds = %cond_true45
- br label %bb60.backedge
-
-cond_true50.bb60_crit_edge: ; preds = %cond_true50
- br label %bb60.backedge
-
-bb60.cond_next67_crit_edge: ; preds = %bb60
- br label %cond_next67
-
-bb60.bb101_crit_edge: ; preds = %bb60
- br label %bb101.preheader
-
-cond_next67.bb101_crit_edge: ; preds = %cond_next67
- br label %bb101.preheader
-
-cond_next67.bb37_crit_edge: ; preds = %cond_next67
- br label %bb37
-
-cond_next67.bb37_crit_edge2: ; preds = %cond_next67
- br label %bb37
-
-cond_next67.bb37_crit_edge3: ; preds = %cond_next67
- br label %bb37
-
-cond_next67.bb37_crit_edge4: ; preds = %cond_next67
- br label %bb37
-
-cond_next67.bb37_crit_edge5: ; preds = %cond_next67
- br label %bb37
-
-cond_true148.cond_next67_crit_edge: ; preds = %codeRepl
- br label %cond_next67
-
-cond_next271.bb60_crit_edge: ; preds = %codeRepl
- br label %bb60.backedge
-
-cond_true290.bb60_crit_edge: ; preds = %codeRepl
- br label %bb60.backedge
-
-cond_true295.bb60_crit_edge: ; preds = %codeRepl
- br label %bb60.backedge
-
-Perl_newSV.exit.cond_next67_crit_edge: ; preds = %codeRepl
- br label %cond_next67
-
-bb101.preheader: ; preds = %cond_next67.bb101_crit_edge, %bb60.bb101_crit_edge
- %s_addr.27.3.ph = phi i8* [ %s_addr.27.2, %cond_next67.bb101_crit_edge ], [ %s_addr.2, %bb60.bb101_crit_edge ] ; <i8*> [#uses=1]
- br label %codeRepl
-
-bb60.backedge: ; preds = %cond_true295.bb60_crit_edge, %cond_true290.bb60_crit_edge, %cond_next271.bb60_crit_edge, %cond_true50.bb60_crit_edge, %cond_true45.bb60_crit_edge, %bb37.bb60_crit_edge, %cond_true55
- %s_addr.2.be = phi i8* [ %tmp43, %cond_true55 ], [ %tmp43, %bb37.bb60_crit_edge ], [ %tmp43, %cond_true45.bb60_crit_edge ], [ %tmp43, %cond_true50.bb60_crit_edge ], [ %tmp274.reload, %cond_next271.bb60_crit_edge ], [ %tmp274.reload, %cond_true290.bb60_crit_edge ], [ %tmp274.reload, %cond_true295.bb60_crit_edge ] ; <i8*> [#uses=1]
- br label %bb60
-}
-
-declare i16 @Perl_skipspace_bb60_bb101(i8*, i8**, i8**, i8**)
diff --git a/test/CodeGen/Generic/2007-04-27-BitTestsBadMask.ll b/test/CodeGen/Generic/2007-04-27-BitTestsBadMask.ll
deleted file mode 100644
index 3e8857f37cb93..0000000000000
--- a/test/CodeGen/Generic/2007-04-27-BitTestsBadMask.ll
+++ /dev/null
@@ -1,18 +0,0 @@
-; RUN: llc < %s -march=x86 | grep je | count 3
-; RUN: llc < %s -march=x86-64 | grep 4297064449
-; PR 1325+
-
-define i32 @foo(i8 %bar) {
-entry:
- switch i8 %bar, label %bb1203 [
- i8 117, label %bb1204
- i8 85, label %bb1204
- i8 106, label %bb1204
- ]
-
-bb1203: ; preds = %entry
- ret i32 1
-
-bb1204: ; preds = %entry, %entry, %entry
- ret i32 2
-}
diff --git a/test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll b/test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll
index 533aa4a8d9b08..bb774b45d8ee7 100644
--- a/test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll
+++ b/test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -enable-eh -march=x86
+; RUN: llc < %s -enable-eh
%struct.exception = type { i8, i8, i32, i8*, i8*, i32, i8* }
@program_error = external global %struct.exception ; <%struct.exception*> [#uses=1]
diff --git a/test/CodeGen/Generic/2007-05-05-Personality.ll b/test/CodeGen/Generic/2007-05-05-Personality.ll
index 27493261d569f..c92783e5e4ebd 100644
--- a/test/CodeGen/Generic/2007-05-05-Personality.ll
+++ b/test/CodeGen/Generic/2007-05-05-Personality.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -mtriple=i686-pc-linux-gnu -enable-eh -o - | grep zPLR
+; RUN: llc < %s -mtriple=i686-pc-linux-gnu -enable-eh -o - | grep zPL
@error = external global i8 ; <i8*> [#uses=2]
diff --git a/test/CodeGen/Generic/2007-06-06-CriticalEdgeLandingPad.ll b/test/CodeGen/Generic/2007-06-06-CriticalEdgeLandingPad.ll
deleted file mode 100644
index 1519fe665cae9..0000000000000
--- a/test/CodeGen/Generic/2007-06-06-CriticalEdgeLandingPad.ll
+++ /dev/null
@@ -1,2870 +0,0 @@
-; RUN: llc < %s -march=x86 -enable-eh -asm-verbose -o - | FileCheck %s
-; PR1422
-; PR1508
-
-target triple = "i686-pc-linux-gnu"
- %struct.exception = type { i8, i8, i32, i8*, i8*, i32, i8* }
- %struct.string___XUB = type { i32, i32 }
- %struct.string___XUP = type { i8*, %struct.string___XUB* }
- %struct.system__secondary_stack__mark_id = type { i8*, i32 }
-@weekS.154 = internal constant [28 x i8] c"SSUNSMONSTUESWEDSTHUSFRISSAT" ; <[28 x i8]*> [#uses=1]
-@weekN.179 = internal constant [8 x i8] c"\01\05\09\0D\11\15\19\1D" ; <[8 x i8]*> [#uses=1]
-@C.28.862 = internal constant %struct.string___XUB { i32 1, i32 85 } ; <%struct.string___XUB*> [#uses=1]
-@C.29.865 = internal constant %struct.string___XUB { i32 1, i32 7 } ; <%struct.string___XUB*> [#uses=1]
-@C.30.904 = internal constant %struct.string___XUB { i32 1, i32 30 } ; <%struct.string___XUB*> [#uses=1]
-@C.32.910 = internal constant %struct.string___XUB { i32 1, i32 28 } ; <%struct.string___XUB*> [#uses=1]
-@C.35.915 = internal constant %struct.string___XUB { i32 1, i32 24 } ; <%struct.string___XUB*> [#uses=1]
-@C.36.923 = internal constant %struct.string___XUB { i32 1, i32 29 } ; <%struct.string___XUB*> [#uses=1]
-@C.98.1466 = internal constant %struct.string___XUB { i32 1, i32 31 } ; <%struct.string___XUB*> [#uses=1]
-@C.101.1473 = internal constant %struct.string___XUB { i32 1, i32 46 } ; <%struct.string___XUB*> [#uses=1]
-@C.104.1478 = internal constant %struct.string___XUB { i32 1, i32 25 } ; <%struct.string___XUB*> [#uses=1]
-@C.124.1606 = internal constant %struct.string___XUB { i32 1, i32 18 } ; <%struct.string___XUB*> [#uses=1]
-@C.143.1720 = internal constant [2 x i32] [ i32 1, i32 2 ] ; <[2 x i32]*> [#uses=1]
-@C.146.1725 = internal constant %struct.string___XUB { i32 1, i32 37 } ; <%struct.string___XUB*> [#uses=1]
-@C.170.1990 = internal constant %struct.string___XUB { i32 1, i32 19 } ; <%struct.string___XUB*> [#uses=1]
-@C.178.2066 = internal constant %struct.string___XUB { i32 1, i32 27 } ; <%struct.string___XUB*> [#uses=1]
-@.str = internal constant [13 x i8] c"c36104b.adb\00\00" ; <[13 x i8]*> [#uses=1]
-@.str1 = internal constant [85 x i8] c"CONSTRAINT_ERROR IS RAISED OR NOT IN DYNAMIC DISCRETE_RANGES WITH EXPLICIT TYPE_MARKS" ; <[85 x i8]*> [#uses=1]
-@.str2 = internal constant [7 x i8] c"C36104B" ; <[7 x i8]*> [#uses=1]
-@constraint_error = external global %struct.exception ; <%struct.exception*> [#uses=18]
-@__gnat_others_value = external constant i32 ; <i32*> [#uses=37]
-@.str3 = internal constant [30 x i8] c"CONSTRAINT_ERROR NOT RAISED 1 " ; <[30 x i8]*> [#uses=1]
-@system__soft_links__abort_undefer = external global void ()* ; <void ()**> [#uses=30]
-@.str4 = internal constant [28 x i8] c"UNHANDLED EXCEPTION RAISED 1" ; <[28 x i8]*> [#uses=1]
-@.str5 = internal constant [24 x i8] c"WRONG EXCEPTION RAISED 1" ; <[24 x i8]*> [#uses=1]
-@.str6 = internal constant [29 x i8] c"CONSTRAINT_ERROR NOT RAISED 3" ; <[29 x i8]*> [#uses=1]
-@.str7 = internal constant [24 x i8] c"WRONG EXCEPTION RAISED 3" ; <[24 x i8]*> [#uses=1]
-@.str10 = internal constant [24 x i8] c"WRONG EXCEPTION RAISED 4" ; <[24 x i8]*> [#uses=1]
-@.str11 = internal constant [30 x i8] c"CONSTRAINT_ERROR NOT RAISED 7 " ; <[30 x i8]*> [#uses=1]
-@.str12 = internal constant [28 x i8] c"UNHANDLED EXCEPTION RAISED 7" ; <[28 x i8]*> [#uses=1]
-@.str13 = internal constant [24 x i8] c"WRONG EXCEPTION RAISED 7" ; <[24 x i8]*> [#uses=1]
-@.str14 = internal constant [30 x i8] c"CONSTRAINT_ERROR NOT RAISED 8 " ; <[30 x i8]*> [#uses=1]
-@.str15 = internal constant [28 x i8] c"UNHANDLED EXCEPTION RAISED 8" ; <[28 x i8]*> [#uses=1]
-@.str16 = internal constant [24 x i8] c"WRONG EXCEPTION RAISED 8" ; <[24 x i8]*> [#uses=1]
-@.str17 = internal constant [30 x i8] c"CONSTRAINT_ERROR NOT RAISED 9 " ; <[30 x i8]*> [#uses=1]
-@.str18 = internal constant [24 x i8] c"WRONG EXCEPTION RAISED 9" ; <[24 x i8]*> [#uses=1]
-@.str19 = internal constant [31 x i8] c"CONSTRAINT_ERROR NOT RAISED 10 " ; <[31 x i8]*> [#uses=1]
-@.str20 = internal constant [46 x i8] c"DID NOT RAISE CONSTRAINT_ERROR AT PROPER PLACE" ; <[46 x i8]*> [#uses=1]
-@.str21 = internal constant [25 x i8] c"WRONG EXCEPTION RAISED 10" ; <[25 x i8]*> [#uses=1]
-@.str22 = internal constant [31 x i8] c"CONSTRAINT_ERROR NOT RAISED 11 " ; <[31 x i8]*> [#uses=1]
-@.str23 = internal constant [25 x i8] c"WRONG EXCEPTION RAISED 11" ; <[25 x i8]*> [#uses=1]
-@.str24 = internal constant [30 x i8] c"'FIRST OF NULL ARRAY INCORRECT" ; <[30 x i8]*> [#uses=1]
-@.str25 = internal constant [18 x i8] c"EXCEPTION RAISED 1" ; <[18 x i8]*> [#uses=1]
-@.str26 = internal constant [18 x i8] c"EXCEPTION RAISED 3" ; <[18 x i8]*> [#uses=1]
-@.str27 = internal constant [31 x i8] c"'LENGTH OF NULL ARRAY INCORRECT" ; <[31 x i8]*> [#uses=1]
-@.str28 = internal constant [18 x i8] c"EXCEPTION RAISED 5" ; <[18 x i8]*> [#uses=1]
-@.str29 = internal constant [37 x i8] c"EVALUATION OF EXPRESSION IS INCORRECT" ; <[37 x i8]*> [#uses=1]
-@.str30 = internal constant [18 x i8] c"EXCEPTION RAISED 7" ; <[18 x i8]*> [#uses=1]
-@.str32 = internal constant [18 x i8] c"EXCEPTION RAISED 9" ; <[18 x i8]*> [#uses=1]
-@.str33 = internal constant [19 x i8] c"EXCEPTION RAISED 10" ; <[19 x i8]*> [#uses=1]
-@.str34 = internal constant [19 x i8] c"EXCEPTION RAISED 12" ; <[19 x i8]*> [#uses=1]
-@.str35 = internal constant [27 x i8] c"INCORRECT 'IN' EVALUATION 1" ; <[27 x i8]*> [#uses=1]
-@.str36 = internal constant [27 x i8] c"INCORRECT 'IN' EVALUATION 2" ; <[27 x i8]*> [#uses=1]
-@.str37 = internal constant [29 x i8] c"INCORRECT 'NOT IN' EVALUATION" ; <[29 x i8]*> [#uses=1]
-@.str38 = internal constant [19 x i8] c"EXCEPTION RAISED 52" ; <[19 x i8]*> [#uses=1]
-
-define void @_ada_c36104b() {
-entry:
- %tmp9 = alloca %struct.system__secondary_stack__mark_id, align 8 ; <%struct.system__secondary_stack__mark_id*> [#uses=3]
- %tmp12 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
- %tmp15 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
- %tmp31 = alloca %struct.system__secondary_stack__mark_id, align 8 ; <%struct.system__secondary_stack__mark_id*> [#uses=3]
- %tmp34 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
- %tmp37 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
- %tmp46 = alloca %struct.system__secondary_stack__mark_id, align 8 ; <%struct.system__secondary_stack__mark_id*> [#uses=3]
- %tmp49 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
- %tmp52 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
- %tmp55 = alloca %struct.system__secondary_stack__mark_id, align 8 ; <%struct.system__secondary_stack__mark_id*> [#uses=3]
- %tmp58 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
- %tmp61 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
- %tmp63 = alloca %struct.system__secondary_stack__mark_id, align 8 ; <%struct.system__secondary_stack__mark_id*> [#uses=3]
- %tmp66 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
- %tmp69 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
- %tmp72 = alloca %struct.system__secondary_stack__mark_id, align 8 ; <%struct.system__secondary_stack__mark_id*> [#uses=3]
- %tmp75 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
- %tmp78 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
- %tmp123 = call i32 @report__ident_int( i32 0 ) ; <i32> [#uses=3]
- %tmp125 = icmp ugt i32 %tmp123, 6 ; <i1> [#uses=1]
- br i1 %tmp125, label %cond_true, label %cond_next136
-
-cond_true: ; preds = %entry
- call void @__gnat_rcheck_10( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 50 )
- unreachable
-
-cond_next136: ; preds = %entry
- %tmp137138 = trunc i32 %tmp123 to i8 ; <i8> [#uses=21]
- %tmp139 = icmp ugt i8 %tmp137138, 6 ; <i1> [#uses=1]
- br i1 %tmp139, label %bb, label %bb144
-
-bb: ; preds = %cond_next136
- call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 50 )
- unreachable
-
-bb144: ; preds = %cond_next136
- %tmp150 = call i32 @report__ident_int( i32 1 ) ; <i32> [#uses=4]
- %tmp154 = icmp ugt i32 %tmp150, 6 ; <i1> [#uses=1]
- br i1 %tmp154, label %cond_true157, label %cond_next169
-
-cond_true157: ; preds = %bb144
- call void @__gnat_rcheck_10( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 51 )
- unreachable
-
-cond_next169: ; preds = %bb144
- %tmp170171 = trunc i32 %tmp150 to i8 ; <i8> [#uses=34]
- %tmp172 = icmp ugt i8 %tmp170171, 6 ; <i1> [#uses=1]
- br i1 %tmp172, label %bb175, label %bb178
-
-bb175: ; preds = %cond_next169
- call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 51 )
- unreachable
-
-bb178: ; preds = %cond_next169
- %tmp184 = call i32 @report__ident_int( i32 2 ) ; <i32> [#uses=3]
- %tmp188 = icmp ugt i32 %tmp184, 6 ; <i1> [#uses=1]
- br i1 %tmp188, label %cond_true191, label %cond_next203
-
-cond_true191: ; preds = %bb178
- call void @__gnat_rcheck_10( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 52 )
- unreachable
-
-cond_next203: ; preds = %bb178
- %tmp204205 = trunc i32 %tmp184 to i8 ; <i8> [#uses=30]
- %tmp206 = icmp ugt i8 %tmp204205, 6 ; <i1> [#uses=3]
- br i1 %tmp206, label %bb209, label %bb212
-
-bb209: ; preds = %cond_next203
- call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 52 )
- unreachable
-
-bb212: ; preds = %cond_next203
- %tmp218 = call i32 @report__ident_int( i32 3 ) ; <i32> [#uses=4]
- %tmp222 = icmp ugt i32 %tmp218, 6 ; <i1> [#uses=1]
- br i1 %tmp222, label %cond_true225, label %cond_next237
-
-cond_true225: ; preds = %bb212
- call void @__gnat_rcheck_10( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 53 )
- unreachable
-
-cond_next237: ; preds = %bb212
- %tmp238239 = trunc i32 %tmp218 to i8 ; <i8> [#uses=34]
- %tmp240 = icmp ugt i8 %tmp238239, 6 ; <i1> [#uses=2]
- br i1 %tmp240, label %bb243, label %bb246
-
-bb243: ; preds = %cond_next237
- call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 53 )
- unreachable
-
-bb246: ; preds = %cond_next237
- %tmp252 = call i32 @report__ident_int( i32 4 ) ; <i32> [#uses=3]
- %tmp256 = icmp ugt i32 %tmp252, 6 ; <i1> [#uses=1]
- br i1 %tmp256, label %cond_true259, label %cond_next271
-
-cond_true259: ; preds = %bb246
- call void @__gnat_rcheck_10( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 54 )
- unreachable
-
-cond_next271: ; preds = %bb246
- %tmp272273 = trunc i32 %tmp252 to i8 ; <i8> [#uses=27]
- %tmp274 = icmp ugt i8 %tmp272273, 6 ; <i1> [#uses=4]
- br i1 %tmp274, label %bb277, label %bb280
-
-bb277: ; preds = %cond_next271
- call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 54 )
- unreachable
-
-bb280: ; preds = %cond_next271
- %tmp286 = call i32 @report__ident_int( i32 5 ) ; <i32> [#uses=3]
- %tmp290 = icmp ugt i32 %tmp286, 6 ; <i1> [#uses=1]
- br i1 %tmp290, label %cond_true293, label %cond_next305
-
-cond_true293: ; preds = %bb280
- call void @__gnat_rcheck_10( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 55 )
- unreachable
-
-cond_next305: ; preds = %bb280
- %tmp306307 = trunc i32 %tmp286 to i8 ; <i8> [#uses=16]
- %tmp308 = icmp ugt i8 %tmp306307, 6 ; <i1> [#uses=1]
- br i1 %tmp308, label %bb311, label %bb314
-
-bb311: ; preds = %cond_next305
- call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 55 )
- unreachable
-
-bb314: ; preds = %cond_next305
- %tmp320 = call i32 @report__ident_int( i32 6 ) ; <i32> [#uses=2]
- %tmp324 = icmp ugt i32 %tmp320, 6 ; <i1> [#uses=1]
- br i1 %tmp324, label %cond_true327, label %cond_next339
-
-cond_true327: ; preds = %bb314
- call void @__gnat_rcheck_10( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 56 )
- unreachable
-
-cond_next339: ; preds = %bb314
- %tmp340341 = trunc i32 %tmp320 to i8 ; <i8> [#uses=4]
- %tmp342 = icmp ugt i8 %tmp340341, 6 ; <i1> [#uses=1]
- br i1 %tmp342, label %bb345, label %bb348
-
-bb345: ; preds = %cond_next339
- call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 56 )
- unreachable
-
-bb348: ; preds = %cond_next339
- %tmp364 = icmp ult i8 %tmp272273, %tmp204205 ; <i1> [#uses=2]
- br i1 %tmp364, label %cond_next383, label %cond_true367
-
-cond_true367: ; preds = %bb348
- %tmp370 = icmp ult i8 %tmp204205, %tmp170171 ; <i1> [#uses=1]
- %tmp374 = icmp ugt i8 %tmp272273, %tmp306307 ; <i1> [#uses=1]
- %tmp378 = or i1 %tmp374, %tmp370 ; <i1> [#uses=1]
- br i1 %tmp378, label %cond_true381, label %cond_next383
-
-cond_true381: ; preds = %cond_true367
- call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 59 )
- unreachable
-
-cond_next383: ; preds = %cond_true367, %bb348
- %tmp384 = call i32 @report__ident_int( i32 -5 ) ; <i32> [#uses=15]
- %tmp388 = add i32 %tmp384, 10 ; <i32> [#uses=1]
- %tmp389 = icmp ugt i32 %tmp388, 20 ; <i1> [#uses=1]
- br i1 %tmp389, label %cond_true392, label %cond_next393
-
-cond_true392: ; preds = %cond_next383
- call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 63 )
- unreachable
-
-cond_next393: ; preds = %cond_next383
- %tmp394 = call i32 @report__ident_int( i32 5 ) ; <i32> [#uses=18]
- %tmp398 = add i32 %tmp394, 10 ; <i32> [#uses=1]
- %tmp399 = icmp ugt i32 %tmp398, 20 ; <i1> [#uses=1]
- br i1 %tmp399, label %cond_true402, label %cond_next403
-
-cond_true402: ; preds = %cond_next393
- call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 64 )
- unreachable
-
-cond_next403: ; preds = %cond_next393
- %tmp416 = icmp slt i32 %tmp394, %tmp384 ; <i1> [#uses=1]
- br i1 %tmp416, label %cond_next437, label %cond_true419
-
-cond_true419: ; preds = %cond_next403
- %tmp423 = icmp slt i32 %tmp384, -10 ; <i1> [#uses=1]
- %tmp428 = icmp sgt i32 %tmp394, 10 ; <i1> [#uses=1]
- %tmp432 = or i1 %tmp428, %tmp423 ; <i1> [#uses=1]
- br i1 %tmp432, label %cond_true435, label %cond_next437
-
-cond_true435: ; preds = %cond_true419
- call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 63 )
- unreachable
-
-cond_next437: ; preds = %cond_true419, %cond_next403
- call void @report__test( i64 or (i64 zext (i32 ptrtoint ([7 x i8]* @.str2 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.29.865 to i32) to i64), i64 32)), i64 or (i64 zext (i32 ptrtoint ([85 x i8]* @.str1 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.28.862 to i32) to i64), i64 32)) )
- %tmp453 = icmp sgt i32 %tmp384, 0 ; <i1> [#uses=1]
- %tmp458 = icmp slt i32 %tmp394, 6 ; <i1> [#uses=1]
- %tmp462 = or i1 %tmp458, %tmp453 ; <i1> [#uses=3]
- br i1 %tmp462, label %cond_true465, label %cond_next467
-
-cond_true465: ; preds = %cond_next437
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 80 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind
-
-unwind: ; preds = %cleanup798, %unwind783, %cond_true465
- %eh_ptr = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
- %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 ) ; <i32> [#uses=2]
- %eh_typeid8065921 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
- %tmp8085923 = icmp eq i32 %eh_select, %eh_typeid8065921 ; <i1> [#uses=1]
- br i1 %tmp8085923, label %eh_then809, label %eh_else823
-
-cond_next467: ; preds = %cond_next437
- invoke void @system__secondary_stack__ss_mark( %struct.system__secondary_stack__mark_id* %tmp9 sret )
- to label %invcont472 unwind label %unwind468
-
-unwind468: ; preds = %cleanup, %unwind480, %cond_next467
- %eh_ptr469 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
- %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 ) ; <i32> [#uses=2]
- %eh_typeid5928 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp7815929 = icmp eq i32 %eh_select471, %eh_typeid5928 ; <i1> [#uses=1]
- br i1 %tmp7815929, label %eh_then, label %cleanup805
-
-invcont472: ; preds = %cond_next467
- %tmp475 = getelementptr %struct.system__secondary_stack__mark_id* %tmp9, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp476 = load i8** %tmp475 ; <i8*> [#uses=2]
- %tmp478 = getelementptr %struct.system__secondary_stack__mark_id* %tmp9, i32 0, i32 1 ; <i32*> [#uses=1]
- %tmp479 = load i32* %tmp478 ; <i32> [#uses=2]
- %tmp485 = invoke i32 @report__ident_int( i32 1 )
- to label %invcont484 unwind label %unwind480 ; <i32> [#uses=2]
-
-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
- %eh_ptr481 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
- %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 ) ; <i32> [#uses=2]
- %tmp7685575 = ptrtoint i8* %tmp476 to i32 ; <i32> [#uses=1]
- %tmp76855755576 = zext i32 %tmp7685575 to i64 ; <i64> [#uses=1]
- %tmp7715572 = zext i32 %tmp479 to i64 ; <i64> [#uses=1]
- %tmp77155725573 = shl i64 %tmp7715572, 32 ; <i64> [#uses=1]
- %tmp77155725573.ins = or i64 %tmp77155725573, %tmp76855755576 ; <i64> [#uses=1]
- invoke void @system__secondary_stack__ss_release( i64 %tmp77155725573.ins )
- to label %cleanup779 unwind label %unwind468
-
-invcont484: ; preds = %invcont472
- %tmp492 = icmp slt i32 %tmp485, %tmp384 ; <i1> [#uses=1]
- %tmp500 = icmp sgt i32 %tmp485, %tmp394 ; <i1> [#uses=1]
- %tmp504 = or i1 %tmp492, %tmp500 ; <i1> [#uses=1]
- br i1 %tmp504, label %cond_true507, label %cond_next509
-
-cond_true507: ; preds = %invcont484
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 86 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind480
-
-cond_next509: ; preds = %invcont484
- %tmp511 = invoke i32 @report__ident_int( i32 1 )
- to label %invcont510 unwind label %unwind480 ; <i32> [#uses=3]
-
-invcont510: ; preds = %cond_next509
- %tmp518 = icmp slt i32 %tmp511, %tmp384 ; <i1> [#uses=1]
- %tmp526 = icmp sgt i32 %tmp511, %tmp394 ; <i1> [#uses=1]
- %tmp530 = or i1 %tmp518, %tmp526 ; <i1> [#uses=1]
- br i1 %tmp530, label %cond_true533, label %cond_next535
-
-cond_true533: ; preds = %invcont510
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 86 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind480
-
-cond_next535: ; preds = %invcont510
- %tmp537 = invoke i32 @report__ident_int( i32 1 )
- to label %invcont536 unwind label %unwind480 ; <i32> [#uses=2]
-
-invcont536: ; preds = %cond_next535
- %tmp544 = icmp slt i32 %tmp537, %tmp384 ; <i1> [#uses=1]
- %tmp552 = icmp sgt i32 %tmp537, %tmp394 ; <i1> [#uses=1]
- %tmp556 = or i1 %tmp544, %tmp552 ; <i1> [#uses=1]
- br i1 %tmp556, label %cond_true559, label %cond_next561
-
-cond_true559: ; preds = %invcont536
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 86 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind480
-
-cond_next561: ; preds = %invcont536
- %tmp563 = invoke i32 @report__ident_int( i32 1 )
- to label %invcont562 unwind label %unwind480 ; <i32> [#uses=2]
-
-invcont562: ; preds = %cond_next561
- %tmp570 = icmp slt i32 %tmp563, %tmp384 ; <i1> [#uses=1]
- %tmp578 = icmp sgt i32 %tmp563, %tmp394 ; <i1> [#uses=1]
- %tmp582 = or i1 %tmp570, %tmp578 ; <i1> [#uses=1]
- br i1 %tmp582, label %cond_true585, label %cond_next587
-
-cond_true585: ; preds = %invcont562
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 86 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind480
-
-cond_next587: ; preds = %invcont562
- %tmp589 = invoke i32 @report__ident_int( i32 1 )
- to label %invcont588 unwind label %unwind480 ; <i32> [#uses=2]
-
-invcont588: ; preds = %cond_next587
- %tmp596 = icmp slt i32 %tmp589, %tmp384 ; <i1> [#uses=1]
- %tmp604 = icmp sgt i32 %tmp589, %tmp394 ; <i1> [#uses=1]
- %tmp608 = or i1 %tmp596, %tmp604 ; <i1> [#uses=1]
- br i1 %tmp608, label %cond_true611, label %cond_next613
-
-cond_true611: ; preds = %invcont588
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 86 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind480
-
-cond_next613: ; preds = %invcont588
- %tmp615 = invoke i32 @report__ident_int( i32 1 )
- to label %invcont614 unwind label %unwind480 ; <i32> [#uses=2]
-
-invcont614: ; preds = %cond_next613
- %tmp622 = icmp slt i32 %tmp615, %tmp384 ; <i1> [#uses=1]
- %tmp630 = icmp sgt i32 %tmp615, %tmp394 ; <i1> [#uses=1]
- %tmp634 = or i1 %tmp622, %tmp630 ; <i1> [#uses=1]
- br i1 %tmp634, label %cond_true637, label %cond_next639
-
-cond_true637: ; preds = %invcont614
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 86 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind480
-
-cond_next639: ; preds = %invcont614
- %tmp641 = invoke i32 @report__ident_int( i32 1 )
- to label %invcont640 unwind label %unwind480 ; <i32> [#uses=2]
-
-invcont640: ; preds = %cond_next639
- %tmp648 = icmp slt i32 %tmp641, %tmp384 ; <i1> [#uses=1]
- %tmp656 = icmp sgt i32 %tmp641, %tmp394 ; <i1> [#uses=1]
- %tmp660 = or i1 %tmp648, %tmp656 ; <i1> [#uses=1]
- br i1 %tmp660, label %cond_true663, label %cond_next665
-
-cond_true663: ; preds = %invcont640
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 86 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind480
-
-cond_next665: ; preds = %invcont640
- invoke void @system__img_int__image_integer( %struct.string___XUP* %tmp12 sret , i32 %tmp511 )
- to label %invcont717 unwind label %unwind480
-
-invcont717: ; preds = %cond_next665
- %tmp719 = getelementptr %struct.string___XUP* %tmp12, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp720 = load i8** %tmp719 ; <i8*> [#uses=1]
- %tmp7205888 = ptrtoint i8* %tmp720 to i32 ; <i32> [#uses=1]
- %tmp72058885889 = zext i32 %tmp7205888 to i64 ; <i64> [#uses=1]
- %tmp722 = getelementptr %struct.string___XUP* %tmp12, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
- %tmp723 = load %struct.string___XUB** %tmp722 ; <%struct.string___XUB*> [#uses=1]
- %tmp7235884 = ptrtoint %struct.string___XUB* %tmp723 to i32 ; <i32> [#uses=1]
- %tmp72358845885 = zext i32 %tmp7235884 to i64 ; <i64> [#uses=1]
- %tmp723588458855886 = shl i64 %tmp72358845885, 32 ; <i64> [#uses=1]
- %tmp723588458855886.ins = or i64 %tmp723588458855886, %tmp72058885889 ; <i64> [#uses=1]
- invoke void @system__string_ops__str_concat( %struct.string___XUP* %tmp15 sret , i64 or (i64 zext (i32 ptrtoint ([30 x i8]* @.str3 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.30.904 to i32) to i64), i64 32)), i64 %tmp723588458855886.ins )
- to label %invcont734 unwind label %unwind480
-
-invcont734: ; preds = %invcont717
- %tmp736 = getelementptr %struct.string___XUP* %tmp15, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp737 = load i8** %tmp736 ; <i8*> [#uses=1]
- %tmp7375876 = ptrtoint i8* %tmp737 to i32 ; <i32> [#uses=1]
- %tmp73758765877 = zext i32 %tmp7375876 to i64 ; <i64> [#uses=1]
- %tmp739 = getelementptr %struct.string___XUP* %tmp15, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
- %tmp740 = load %struct.string___XUB** %tmp739 ; <%struct.string___XUB*> [#uses=1]
- %tmp7405872 = ptrtoint %struct.string___XUB* %tmp740 to i32 ; <i32> [#uses=1]
- %tmp74058725873 = zext i32 %tmp7405872 to i64 ; <i64> [#uses=1]
- %tmp740587258735874 = shl i64 %tmp74058725873, 32 ; <i64> [#uses=1]
- %tmp740587258735874.ins = or i64 %tmp740587258735874, %tmp73758765877 ; <i64> [#uses=1]
- invoke void @report__failed( i64 %tmp740587258735874.ins )
- to label %cleanup unwind label %unwind480
-
-cleanup: ; preds = %invcont734
- %tmp7515581 = ptrtoint i8* %tmp476 to i32 ; <i32> [#uses=1]
- %tmp75155815582 = zext i32 %tmp7515581 to i64 ; <i64> [#uses=1]
- %tmp7545578 = zext i32 %tmp479 to i64 ; <i64> [#uses=1]
- %tmp75455785579 = shl i64 %tmp7545578, 32 ; <i64> [#uses=1]
- %tmp75455785579.ins = or i64 %tmp75455785579, %tmp75155815582 ; <i64> [#uses=1]
- invoke void @system__secondary_stack__ss_release( i64 %tmp75455785579.ins )
- to label %cond_true856 unwind label %unwind468
-
-cleanup779: ; preds = %unwind480
- %eh_typeid = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp781 = icmp eq i32 %eh_select483, %eh_typeid ; <i1> [#uses=1]
- br i1 %tmp781, label %eh_then, label %cleanup805
-
-eh_then: ; preds = %cleanup779, %unwind468
- %eh_exception.35924.0 = phi i8* [ %eh_ptr469, %unwind468 ], [ %eh_ptr481, %cleanup779 ] ; <i8*> [#uses=3]
- invoke void @__gnat_begin_handler( i8* %eh_exception.35924.0 )
- to label %invcont787 unwind label %unwind783
-
-unwind783: ; preds = %invcont789, %invcont787, %eh_then
- %eh_ptr784 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
- %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 ) ; <i32> [#uses=1]
- invoke void @__gnat_end_handler( i8* %eh_exception.35924.0 )
- to label %cleanup805 unwind label %unwind
-
-invcont787: ; preds = %eh_then
- %tmp788 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp788( )
- to label %invcont789 unwind label %unwind783
-
-invcont789: ; preds = %invcont787
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([28 x i8]* @.str4 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.32.910 to i32) to i64), i64 32)) )
- to label %cleanup798 unwind label %unwind783
-
-cleanup798: ; preds = %invcont789
- invoke void @__gnat_end_handler( i8* %eh_exception.35924.0 )
- to label %cond_true856 unwind label %unwind
-
-cleanup805: ; preds = %unwind783, %cleanup779, %unwind468
- %eh_selector.0 = phi i32 [ %eh_select471, %unwind468 ], [ %eh_select483, %cleanup779 ], [ %eh_select786, %unwind783 ] ; <i32> [#uses=2]
- %eh_exception.0 = phi i8* [ %eh_ptr469, %unwind468 ], [ %eh_ptr481, %cleanup779 ], [ %eh_ptr784, %unwind783 ] ; <i8*> [#uses=2]
- %eh_typeid806 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
- %tmp808 = icmp eq i32 %eh_selector.0, %eh_typeid806 ; <i1> [#uses=1]
- br i1 %tmp808, label %eh_then809, label %eh_else823
-
-eh_then809: ; preds = %cleanup805, %unwind
- %eh_exception.05914.0 = phi i8* [ %eh_ptr, %unwind ], [ %eh_exception.0, %cleanup805 ] ; <i8*> [#uses=3]
- invoke void @__gnat_begin_handler( i8* %eh_exception.05914.0 )
- to label %invcont815 unwind label %unwind813
-
-unwind813: ; preds = %invcont815, %eh_then809
- %eh_ptr814 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_exception.05914.0 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr814 ) ; <i32>:0 [#uses=0]
- unreachable
-
-invcont815: ; preds = %eh_then809
- %tmp816 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp816( )
- to label %cleanup819 unwind label %unwind813
-
-cleanup819: ; preds = %invcont815
- call void @__gnat_end_handler( i8* %eh_exception.05914.0 )
- %tmp8595931 = icmp ult i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
- %tmp8635932 = icmp ugt i8 %tmp170171, %tmp272273 ; <i1> [#uses=1]
- %tmp8675933 = or i1 %tmp8635932, %tmp8595931 ; <i1> [#uses=1]
- br i1 %tmp8675933, label %cond_true870, label %bb887
-
-eh_else823: ; preds = %cleanup805, %unwind
- %eh_selector.05912.1 = phi i32 [ %eh_select, %unwind ], [ %eh_selector.0, %cleanup805 ] ; <i32> [#uses=1]
- %eh_exception.05914.1 = phi i8* [ %eh_ptr, %unwind ], [ %eh_exception.0, %cleanup805 ] ; <i8*> [#uses=4]
- %eh_typeid824 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp826 = icmp eq i32 %eh_selector.05912.1, %eh_typeid824 ; <i1> [#uses=1]
- br i1 %tmp826, label %eh_then827, label %Unwind
-
-eh_then827: ; preds = %eh_else823
- invoke void @__gnat_begin_handler( i8* %eh_exception.05914.1 )
- to label %invcont833 unwind label %unwind831
-
-unwind831: ; preds = %invcont835, %invcont833, %eh_then827
- %eh_ptr832 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_exception.05914.1 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr832 ) ; <i32>:1 [#uses=0]
- unreachable
-
-invcont833: ; preds = %eh_then827
- %tmp834 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp834( )
- to label %invcont835 unwind label %unwind831
-
-invcont835: ; preds = %invcont833
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([24 x i8]* @.str5 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.35.915 to i32) to i64), i64 32)) )
- to label %cleanup844 unwind label %unwind831
-
-cleanup844: ; preds = %invcont835
- call void @__gnat_end_handler( i8* %eh_exception.05914.1 )
- br label %cond_true856
-
-cond_true856: ; preds = %cleanup844, %cleanup798, %cleanup
- %tmp859 = icmp ult i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
- %tmp863 = icmp ugt i8 %tmp170171, %tmp272273 ; <i1> [#uses=1]
- %tmp867 = or i1 %tmp863, %tmp859 ; <i1> [#uses=1]
- br i1 %tmp867, label %cond_true870, label %bb887
-
-cond_true870: ; preds = %cond_true856, %cleanup819
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 103 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind871
-
-unwind871: ; preds = %cond_next905, %bb887, %cond_true870
- %sat.3 = phi i8 [ %tmp340341, %cond_true870 ], [ %sat.1, %bb887 ], [ %sat.0, %cond_next905 ] ; <i8> [#uses=2]
- %eh_ptr872 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=8]
- %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 ) ; <i32> [#uses=2]
- %eh_typeid915 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
- %tmp917 = icmp eq i32 %eh_select874, %eh_typeid915 ; <i1> [#uses=1]
- br i1 %tmp917, label %eh_then918, label %eh_else932
-
-bb887: ; preds = %cond_next901, %cond_true856, %cleanup819
- %indvar = phi i8 [ %indvar.next10, %cond_next901 ], [ 0, %cond_true856 ], [ 0, %cleanup819 ] ; <i8> [#uses=2]
- %sat.1 = phi i8 [ %sat.0, %cond_next901 ], [ %tmp340341, %cond_true856 ], [ %tmp340341, %cleanup819 ] ; <i8> [#uses=2]
- %tmp889 = invoke i8 @report__equal( i32 2, i32 2 )
- to label %invcont888 unwind label %unwind871 ; <i8> [#uses=1]
-
-invcont888: ; preds = %bb887
- %i.4 = add i8 %indvar, %tmp170171 ; <i8> [#uses=1]
- %tmp890 = icmp eq i8 %tmp889, 0 ; <i1> [#uses=1]
- %sat.0 = select i1 %tmp890, i8 %sat.1, i8 6 ; <i8> [#uses=3]
- %tmp897 = icmp eq i8 %i.4, %tmp170171 ; <i1> [#uses=1]
- br i1 %tmp897, label %cond_next905, label %cond_next901
-
-cond_next901: ; preds = %invcont888
- %indvar.next10 = add i8 %indvar, 1 ; <i8> [#uses=1]
- br label %bb887
-
-cond_next905: ; preds = %invcont888
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([29 x i8]* @.str6 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.36.923 to i32) to i64), i64 32)) )
- to label %finally913 unwind label %unwind871
-
-eh_then918: ; preds = %unwind871
- invoke void @__gnat_begin_handler( i8* %eh_ptr872 )
- to label %invcont924 unwind label %unwind922
-
-unwind922: ; preds = %invcont924, %eh_then918
- %eh_ptr923 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_ptr872 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr923 ) ; <i32>:2 [#uses=0]
- unreachable
-
-invcont924: ; preds = %eh_then918
- %tmp925 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp925( )
- to label %cleanup928 unwind label %unwind922
-
-cleanup928: ; preds = %invcont924
- call void @__gnat_end_handler( i8* %eh_ptr872 )
- br i1 %tmp462, label %cond_true973, label %UnifiedReturnBlock35
-
-eh_else932: ; preds = %unwind871
- %eh_typeid933 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp935 = icmp eq i32 %eh_select874, %eh_typeid933 ; <i1> [#uses=1]
- br i1 %tmp935, label %eh_then936, label %Unwind
-
-eh_then936: ; preds = %eh_else932
- invoke void @__gnat_begin_handler( i8* %eh_ptr872 )
- to label %invcont942 unwind label %unwind940
-
-unwind940: ; preds = %invcont944, %invcont942, %eh_then936
- %eh_ptr941 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_ptr872 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr941 ) ; <i32>:3 [#uses=0]
- unreachable
-
-invcont942: ; preds = %eh_then936
- %tmp943 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp943( )
- to label %invcont944 unwind label %unwind940
-
-invcont944: ; preds = %invcont942
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([24 x i8]* @.str7 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.35.915 to i32) to i64), i64 32)) )
- to label %cleanup953 unwind label %unwind940
-
-cleanup953: ; preds = %invcont944
- call void @__gnat_end_handler( i8* %eh_ptr872 )
- br label %finally913
-
-finally913: ; preds = %cleanup953, %cond_next905
- %sat.4 = phi i8 [ %sat.3, %cleanup953 ], [ %sat.0, %cond_next905 ] ; <i8> [#uses=1]
- br i1 %tmp462, label %cond_true973, label %UnifiedReturnBlock35
-
-cond_true973: ; preds = %finally913, %cleanup928
- %sat.45934.0 = phi i8 [ %sat.3, %cleanup928 ], [ %sat.4, %finally913 ] ; <i8> [#uses=9]
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 119 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind974
-
-unwind974: ; preds = %cond_true973
- %eh_ptr975 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=8]
- %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 ) ; <i32> [#uses=2]
- %eh_typeid13135959 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
- %tmp13155961 = icmp eq i32 %eh_select977, %eh_typeid13135959 ; <i1> [#uses=1]
- br i1 %tmp13155961, label %eh_then1316, label %eh_else1330
-
-eh_then1316: ; preds = %unwind974
- invoke void @__gnat_begin_handler( i8* %eh_ptr975 )
- to label %invcont1322 unwind label %unwind1320
-
-unwind1320: ; preds = %invcont1322, %eh_then1316
- %eh_ptr1321 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_ptr975 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr1321 ) ; <i32>:4 [#uses=0]
- unreachable
-
-invcont1322: ; preds = %eh_then1316
- %tmp1323 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp1323( )
- to label %cleanup1326 unwind label %unwind1320
-
-cleanup1326: ; preds = %invcont1322
- call void @__gnat_end_handler( i8* %eh_ptr975 )
- br label %finally1311
-
-eh_else1330: ; preds = %unwind974
- %eh_typeid1331 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp1333 = icmp eq i32 %eh_select977, %eh_typeid1331 ; <i1> [#uses=1]
- br i1 %tmp1333, label %eh_then1334, label %Unwind
-
-eh_then1334: ; preds = %eh_else1330
- invoke void @__gnat_begin_handler( i8* %eh_ptr975 )
- to label %invcont1340 unwind label %unwind1338
-
-unwind1338: ; preds = %invcont1342, %invcont1340, %eh_then1334
- %eh_ptr1339 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_ptr975 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr1339 ) ; <i32>:5 [#uses=0]
- unreachable
-
-invcont1340: ; preds = %eh_then1334
- %tmp1341 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp1341( )
- to label %invcont1342 unwind label %unwind1338
-
-invcont1342: ; preds = %invcont1340
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([24 x i8]* @.str10 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.35.915 to i32) to i64), i64 32)) )
- to label %cleanup1351 unwind label %unwind1338
-
-cleanup1351: ; preds = %invcont1342
- call void @__gnat_end_handler( i8* %eh_ptr975 )
- br label %finally1311
-
-finally1311: ; preds = %cleanup1351, %cleanup1326
- %tmp1356 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=6]
- %tmp13571358 = and i32 %tmp184, 255 ; <i32> [#uses=11]
- %tmp13831384 = and i32 %tmp252, 255 ; <i32> [#uses=5]
- %tmp1387 = add i32 %tmp13571358, -1 ; <i32> [#uses=2]
- %tmp1388 = icmp sge i32 %tmp13831384, %tmp1387 ; <i1> [#uses=1]
- %max1389 = select i1 %tmp1388, i32 %tmp13831384, i32 %tmp1387 ; <i32> [#uses=1]
- %tmp1392 = sub i32 %max1389, %tmp13571358 ; <i32> [#uses=1]
- %tmp1393 = add i32 %tmp1392, 1 ; <i32> [#uses=2]
- %tmp1394 = icmp sgt i32 %tmp1393, -1 ; <i1> [#uses=1]
- %max1395 = select i1 %tmp1394, i32 %tmp1393, i32 0 ; <i32> [#uses=5]
- %tmp1397 = alloca i8, i32 %max1395 ; <i8*> [#uses=2]
- %tmp1401 = icmp ult i8 %tmp238239, %tmp170171 ; <i1> [#uses=2]
- br i1 %tmp1401, label %cond_next1425, label %cond_true1404
-
-cond_true1404: ; preds = %finally1311
- %tmp1407 = icmp ult i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
- %tmp1411 = icmp ugt i8 %tmp238239, %tmp272273 ; <i1> [#uses=1]
- %tmp1415 = or i1 %tmp1411, %tmp1407 ; <i1> [#uses=1]
- br i1 %tmp1415, label %cond_true1418, label %cond_next1425
-
-cond_true1418: ; preds = %cond_true1404
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 144 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind1419
-
-unwind1419: ; preds = %cleanup1702, %cleanup1686, %unwind1676, %cond_next1548, %cond_true1546, %cond_true1418
- %eh_ptr1420 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
- %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 ) ; <i32> [#uses=2]
- %eh_typeid17215981 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
- %tmp17235983 = icmp eq i32 %eh_select1422, %eh_typeid17215981 ; <i1> [#uses=1]
- br i1 %tmp17235983, label %eh_then1724, label %eh_else1742
-
-cond_next1425: ; preds = %cond_true1404, %finally1311
- %tmp14281429 = and i32 %tmp150, 255 ; <i32> [#uses=3]
- %tmp14841485 = and i32 %tmp218, 255 ; <i32> [#uses=3]
- %tmp1488 = add i32 %tmp14281429, -1 ; <i32> [#uses=2]
- %tmp1489 = icmp sge i32 %tmp14841485, %tmp1488 ; <i1> [#uses=1]
- %max1490 = select i1 %tmp1489, i32 %tmp14841485, i32 %tmp1488 ; <i32> [#uses=1]
- %tmp1493 = sub i32 %max1490, %tmp14281429 ; <i32> [#uses=1]
- %tmp1494 = add i32 %tmp1493, 1 ; <i32> [#uses=2]
- %tmp1495 = icmp sgt i32 %tmp1494, -1 ; <i1> [#uses=1]
- %max1496 = select i1 %tmp1495, i32 %tmp1494, i32 0 ; <i32> [#uses=1]
- %tmp1497 = alloca i8, i32 %max1496 ; <i8*> [#uses=3]
- %tmp1504 = icmp ugt i8 %tmp170171, %tmp238239 ; <i1> [#uses=1]
- br i1 %tmp1504, label %cond_next1526, label %bb1509
-
-bb1509: ; preds = %cond_next1425
- store i8 %tmp238239, i8* %tmp1497
- %tmp1518 = icmp eq i8 %tmp238239, %tmp170171 ; <i1> [#uses=1]
- br i1 %tmp1518, label %cond_next1526, label %cond_next1522.preheader
-
-cond_next1522.preheader: ; preds = %bb1509
- %J64b.55984.8 = add i8 %tmp170171, 1 ; <i8> [#uses=1]
- br label %cond_next1522
-
-cond_next1522: ; preds = %cond_next1522, %cond_next1522.preheader
- %indvar6241 = phi i8 [ 0, %cond_next1522.preheader ], [ %indvar.next, %cond_next1522 ] ; <i8> [#uses=2]
- %tmp1524 = add i8 %J64b.55984.8, %indvar6241 ; <i8> [#uses=2]
- %tmp151015115988 = zext i8 %tmp1524 to i32 ; <i32> [#uses=1]
- %tmp15135989 = sub i32 %tmp151015115988, %tmp14281429 ; <i32> [#uses=1]
- %tmp15145990 = getelementptr i8* %tmp1497, i32 %tmp15135989 ; <i8*> [#uses=1]
- store i8 %tmp238239, i8* %tmp15145990
- %tmp15185992 = icmp eq i8 %tmp238239, %tmp1524 ; <i1> [#uses=1]
- %indvar.next = add i8 %indvar6241, 1 ; <i8> [#uses=1]
- br i1 %tmp15185992, label %cond_next1526, label %cond_next1522
-
-cond_next1526: ; preds = %cond_next1522, %bb1509, %cond_next1425
- %tmp15271528 = zext i8 %tmp272273 to i64 ; <i64> [#uses=1]
- %tmp15291530 = zext i8 %tmp204205 to i64 ; <i64> [#uses=1]
- %tmp1531 = sub i64 %tmp15271528, %tmp15291530 ; <i64> [#uses=1]
- %tmp1532 = add i64 %tmp1531, 1 ; <i64> [#uses=2]
- %tmp1533 = icmp sgt i64 %tmp1532, -1 ; <i1> [#uses=1]
- %max1534 = select i1 %tmp1533, i64 %tmp1532, i64 0 ; <i64> [#uses=1]
- %tmp15351536 = zext i8 %tmp238239 to i64 ; <i64> [#uses=1]
- %tmp15371538 = zext i8 %tmp170171 to i64 ; <i64> [#uses=1]
- %tmp1539 = sub i64 %tmp15351536, %tmp15371538 ; <i64> [#uses=1]
- %tmp1540 = add i64 %tmp1539, 1 ; <i64> [#uses=2]
- %tmp1541 = icmp sgt i64 %tmp1540, -1 ; <i1> [#uses=1]
- %max1542 = select i1 %tmp1541, i64 %tmp1540, i64 0 ; <i64> [#uses=1]
- %tmp1543 = icmp eq i64 %max1534, %max1542 ; <i1> [#uses=1]
- br i1 %tmp1543, label %cond_next1548, label %cond_true1546
-
-cond_true1546: ; preds = %cond_next1526
- invoke void @__gnat_rcheck_07( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 144 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind1419
-
-cond_next1548: ; preds = %cond_next1526
- call void @llvm.memcpy.i32( i8* %tmp1397, i8* %tmp1497, i32 %max1395, i32 1 )
- invoke void @system__secondary_stack__ss_mark( %struct.system__secondary_stack__mark_id* %tmp31 sret )
- to label %invcont1552 unwind label %unwind1419
-
-invcont1552: ; preds = %cond_next1548
- %tmp1555 = getelementptr %struct.system__secondary_stack__mark_id* %tmp31, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp1556 = load i8** %tmp1555 ; <i8*> [#uses=3]
- %tmp1558 = getelementptr %struct.system__secondary_stack__mark_id* %tmp31, i32 0, i32 1 ; <i32*> [#uses=1]
- %tmp1559 = load i32* %tmp1558 ; <i32> [#uses=3]
- %tmp1562 = icmp ult i8 %tmp238239, %tmp204205 ; <i1> [#uses=1]
- %tmp1566 = icmp ugt i8 %tmp238239, %tmp272273 ; <i1> [#uses=1]
- %tmp1570 = or i1 %tmp1566, %tmp1562 ; <i1> [#uses=1]
- br i1 %tmp1570, label %cond_true1573, label %cond_next1591
-
-cond_true1573: ; preds = %invcont1552
- invoke void @__gnat_rcheck_05( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 148 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind1574
-
-unwind1574: ; preds = %invcont1638, %invcont1621, %bb1607, %bb1605, %cond_true1573
- %eh_ptr1575 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
- %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 ) ; <i32> [#uses=2]
- %eh_typeid1652 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp1654 = icmp eq i32 %eh_select1577, %eh_typeid1652 ; <i1> [#uses=1]
- br i1 %tmp1654, label %eh_then1655, label %cleanup1686
-
-cond_next1591: ; preds = %invcont1552
- %tmp1595 = sub i32 %tmp14841485, %tmp13571358 ; <i32> [#uses=1]
- %tmp1596 = getelementptr i8* %tmp1397, i32 %tmp1595 ; <i8*> [#uses=1]
- %tmp1597 = load i8* %tmp1596 ; <i8> [#uses=2]
- %tmp1599 = icmp ugt i8 %tmp1597, 6 ; <i1> [#uses=1]
- br i1 %tmp1599, label %bb1605, label %bb1607
-
-bb1605: ; preds = %cond_next1591
- invoke void @__gnat_rcheck_06( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 148 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind1574
-
-bb1607: ; preds = %cond_next1591
- %tmp16151616 = zext i8 %tmp1597 to i32 ; <i32> [#uses=1]
- invoke void @system__img_enum__image_enumeration_8( %struct.string___XUP* %tmp34 sret , i32 %tmp16151616, i64 or (i64 zext (i32 ptrtoint ([28 x i8]* @weekS.154 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.32.910 to i32) to i64), i64 32)), i8* getelementptr ([8 x i8]* @weekN.179, i32 0, i32 0) )
- to label %invcont1621 unwind label %unwind1574
-
-invcont1621: ; preds = %bb1607
- %tmp1623 = getelementptr %struct.string___XUP* %tmp34, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp1624 = load i8** %tmp1623 ; <i8*> [#uses=1]
- %tmp16245815 = ptrtoint i8* %tmp1624 to i32 ; <i32> [#uses=1]
- %tmp162458155816 = zext i32 %tmp16245815 to i64 ; <i64> [#uses=1]
- %tmp1626 = getelementptr %struct.string___XUP* %tmp34, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
- %tmp1627 = load %struct.string___XUB** %tmp1626 ; <%struct.string___XUB*> [#uses=1]
- %tmp16275811 = ptrtoint %struct.string___XUB* %tmp1627 to i32 ; <i32> [#uses=1]
- %tmp162758115812 = zext i32 %tmp16275811 to i64 ; <i64> [#uses=1]
- %tmp1627581158125813 = shl i64 %tmp162758115812, 32 ; <i64> [#uses=1]
- %tmp1627581158125813.ins = or i64 %tmp1627581158125813, %tmp162458155816 ; <i64> [#uses=1]
- invoke void @system__string_ops__str_concat( %struct.string___XUP* %tmp37 sret , i64 or (i64 zext (i32 ptrtoint ([30 x i8]* @.str11 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.30.904 to i32) to i64), i64 32)), i64 %tmp1627581158125813.ins )
- to label %invcont1638 unwind label %unwind1574
-
-invcont1638: ; preds = %invcont1621
- %tmp1640 = getelementptr %struct.string___XUP* %tmp37, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp1641 = load i8** %tmp1640 ; <i8*> [#uses=1]
- %tmp16415803 = ptrtoint i8* %tmp1641 to i32 ; <i32> [#uses=1]
- %tmp164158035804 = zext i32 %tmp16415803 to i64 ; <i64> [#uses=1]
- %tmp1643 = getelementptr %struct.string___XUP* %tmp37, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
- %tmp1644 = load %struct.string___XUB** %tmp1643 ; <%struct.string___XUB*> [#uses=1]
- %tmp16445799 = ptrtoint %struct.string___XUB* %tmp1644 to i32 ; <i32> [#uses=1]
- %tmp164457995800 = zext i32 %tmp16445799 to i64 ; <i64> [#uses=1]
- %tmp1644579958005801 = shl i64 %tmp164457995800, 32 ; <i64> [#uses=1]
- %tmp1644579958005801.ins = or i64 %tmp1644579958005801, %tmp164158035804 ; <i64> [#uses=1]
- invoke void @report__failed( i64 %tmp1644579958005801.ins )
- to label %cleanup1702 unwind label %unwind1574
-
-eh_then1655: ; preds = %unwind1574
- invoke void @__gnat_begin_handler( i8* %eh_ptr1575 )
- to label %invcont1663 unwind label %unwind1659
-
-unwind1659: ; preds = %invcont1665, %invcont1663, %eh_then1655
- %eh_ptr1660 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
- %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 ) ; <i32> [#uses=1]
- invoke void @__gnat_end_handler( i8* %eh_ptr1575 )
- to label %cleanup1686 unwind label %unwind1676
-
-invcont1663: ; preds = %eh_then1655
- %tmp1664 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp1664( )
- to label %invcont1665 unwind label %unwind1659
-
-invcont1665: ; preds = %invcont1663
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([28 x i8]* @.str12 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.32.910 to i32) to i64), i64 32)) )
- to label %cleanup1674 unwind label %unwind1659
-
-cleanup1674: ; preds = %invcont1665
- invoke void @__gnat_end_handler( i8* %eh_ptr1575 )
- to label %cleanup1702 unwind label %unwind1676
-
-unwind1676: ; preds = %cleanup1674, %unwind1659
- %eh_ptr1677 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
- %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 ) ; <i32> [#uses=1]
- %tmp169255575995 = ptrtoint i8* %tmp1556 to i32 ; <i32> [#uses=1]
- %tmp1692555755585996 = zext i32 %tmp169255575995 to i64 ; <i64> [#uses=1]
- %tmp169555545997 = zext i32 %tmp1559 to i64 ; <i64> [#uses=1]
- %tmp1695555455555998 = shl i64 %tmp169555545997, 32 ; <i64> [#uses=1]
- %tmp169555545555.ins5999 = or i64 %tmp1695555455555998, %tmp1692555755585996 ; <i64> [#uses=1]
- invoke void @system__secondary_stack__ss_release( i64 %tmp169555545555.ins5999 )
- to label %cleanup1720 unwind label %unwind1419
-
-cleanup1686: ; preds = %unwind1659, %unwind1574
- %eh_selector.18 = phi i32 [ %eh_select1577, %unwind1574 ], [ %eh_select1662, %unwind1659 ] ; <i32> [#uses=1]
- %eh_exception.18 = phi i8* [ %eh_ptr1575, %unwind1574 ], [ %eh_ptr1660, %unwind1659 ] ; <i8*> [#uses=1]
- %tmp16925557 = ptrtoint i8* %tmp1556 to i32 ; <i32> [#uses=1]
- %tmp169255575558 = zext i32 %tmp16925557 to i64 ; <i64> [#uses=1]
- %tmp16955554 = zext i32 %tmp1559 to i64 ; <i64> [#uses=1]
- %tmp169555545555 = shl i64 %tmp16955554, 32 ; <i64> [#uses=1]
- %tmp169555545555.ins = or i64 %tmp169555545555, %tmp169255575558 ; <i64> [#uses=1]
- invoke void @system__secondary_stack__ss_release( i64 %tmp169555545555.ins )
- to label %cleanup1720 unwind label %unwind1419
-
-cleanup1702: ; preds = %cleanup1674, %invcont1638
- %tmp17095551 = ptrtoint i8* %tmp1556 to i32 ; <i32> [#uses=1]
- %tmp170955515552 = zext i32 %tmp17095551 to i64 ; <i64> [#uses=1]
- %tmp17125548 = zext i32 %tmp1559 to i64 ; <i64> [#uses=1]
- %tmp171255485549 = shl i64 %tmp17125548, 32 ; <i64> [#uses=1]
- %tmp171255485549.ins = or i64 %tmp171255485549, %tmp170955515552 ; <i64> [#uses=1]
- invoke void @system__secondary_stack__ss_release( i64 %tmp171255485549.ins )
- to label %cleanup1773 unwind label %unwind1419
-
-cleanup1720: ; preds = %cleanup1686, %unwind1676
- %eh_selector.185993.1 = phi i32 [ %eh_select1679, %unwind1676 ], [ %eh_selector.18, %cleanup1686 ] ; <i32> [#uses=2]
- %eh_exception.185994.1 = phi i8* [ %eh_ptr1677, %unwind1676 ], [ %eh_exception.18, %cleanup1686 ] ; <i8*> [#uses=2]
- %eh_typeid1721 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
- %tmp1723 = icmp eq i32 %eh_selector.185993.1, %eh_typeid1721 ; <i1> [#uses=1]
- br i1 %tmp1723, label %eh_then1724, label %eh_else1742
-
-eh_then1724: ; preds = %cleanup1720, %unwind1419
- %eh_exception.135974.0 = phi i8* [ %eh_ptr1420, %unwind1419 ], [ %eh_exception.185994.1, %cleanup1720 ] ; <i8*> [#uses=3]
- invoke void @__gnat_begin_handler( i8* %eh_exception.135974.0 )
- to label %invcont1730 unwind label %unwind1728
-
-unwind1728: ; preds = %invcont1730, %eh_then1724
- %eh_ptr1729 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- invoke void @__gnat_end_handler( i8* %eh_exception.135974.0 )
- to label %cleanup1771 unwind label %unwind1736
-
-invcont1730: ; preds = %eh_then1724
- %tmp1731 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp1731( )
- to label %cleanup1734 unwind label %unwind1728
-
-cleanup1734: ; preds = %invcont1730
- invoke void @__gnat_end_handler( i8* %eh_exception.135974.0 )
- to label %cleanup1773 unwind label %unwind1736
-
-unwind1736: ; preds = %cleanup1763, %unwind1750, %cleanup1734, %unwind1728
- %eh_ptr1737 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @llvm.stackrestore( i8* %tmp1356 )
- call void @llvm.stackrestore( i8* %tmp1356 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr1737 ) ; <i32>:6 [#uses=0]
- unreachable
-
-eh_else1742: ; preds = %cleanup1720, %unwind1419
- %eh_selector.135972.1 = phi i32 [ %eh_select1422, %unwind1419 ], [ %eh_selector.185993.1, %cleanup1720 ] ; <i32> [#uses=1]
- %eh_exception.135974.1 = phi i8* [ %eh_ptr1420, %unwind1419 ], [ %eh_exception.185994.1, %cleanup1720 ] ; <i8*> [#uses=4]
- %eh_typeid1743 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp1745 = icmp eq i32 %eh_selector.135972.1, %eh_typeid1743 ; <i1> [#uses=1]
- br i1 %tmp1745, label %eh_then1746, label %cleanup1771
-
-eh_then1746: ; preds = %eh_else1742
- invoke void @__gnat_begin_handler( i8* %eh_exception.135974.1 )
- to label %invcont1752 unwind label %unwind1750
-
-unwind1750: ; preds = %invcont1754, %invcont1752, %eh_then1746
- %eh_ptr1751 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- invoke void @__gnat_end_handler( i8* %eh_exception.135974.1 )
- to label %cleanup1771 unwind label %unwind1736
-
-invcont1752: ; preds = %eh_then1746
- %tmp1753 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp1753( )
- to label %invcont1754 unwind label %unwind1750
-
-invcont1754: ; preds = %invcont1752
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([24 x i8]* @.str13 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.35.915 to i32) to i64), i64 32)) )
- to label %cleanup1763 unwind label %unwind1750
-
-cleanup1763: ; preds = %invcont1754
- invoke void @__gnat_end_handler( i8* %eh_exception.135974.1 )
- to label %cleanup1773 unwind label %unwind1736
-
-cleanup1771: ; preds = %unwind1750, %eh_else1742, %unwind1728
- %eh_exception.20 = phi i8* [ %eh_ptr1729, %unwind1728 ], [ %eh_exception.135974.1, %eh_else1742 ], [ %eh_ptr1751, %unwind1750 ] ; <i8*> [#uses=1]
- call void @llvm.stackrestore( i8* %tmp1356 )
- call void @llvm.stackrestore( i8* %tmp1356 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_exception.20 ) ; <i32>:7 [#uses=0]
- unreachable
-
-cleanup1773: ; preds = %cleanup1763, %cleanup1734, %cleanup1702
- call void @llvm.stackrestore( i8* %tmp1356 )
- call void @llvm.stackrestore( i8* %tmp1356 )
- %tmp1780 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=6]
- %tmp17811782 = and i32 %tmp150, 255 ; <i32> [#uses=4]
- %tmp18071808 = and i32 %tmp286, 255 ; <i32> [#uses=2]
- %tmp1811 = add i32 %tmp17811782, -1 ; <i32> [#uses=2]
- %tmp1812 = icmp sge i32 %tmp18071808, %tmp1811 ; <i1> [#uses=1]
- %max1813 = select i1 %tmp1812, i32 %tmp18071808, i32 %tmp1811 ; <i32> [#uses=1]
- %tmp1816 = sub i32 %max1813, %tmp17811782 ; <i32> [#uses=1]
- %tmp1817 = add i32 %tmp1816, 1 ; <i32> [#uses=2]
- %tmp1818 = icmp sgt i32 %tmp1817, -1 ; <i1> [#uses=1]
- %max1819 = select i1 %tmp1818, i32 %tmp1817, i32 0 ; <i32> [#uses=3]
- %tmp1821 = alloca i8, i32 %max1819 ; <i8*> [#uses=2]
- %tmp1863 = alloca i8, i32 %max1819 ; <i8*> [#uses=3]
- %tmp1870 = icmp ugt i8 %tmp170171, %tmp306307 ; <i1> [#uses=1]
- br i1 %tmp1870, label %cond_next1900, label %bb1875
-
-bb1875: ; preds = %cleanup1773
- store i8 %tmp238239, i8* %tmp1863
- %tmp1884 = icmp eq i8 %tmp306307, %tmp170171 ; <i1> [#uses=1]
- br i1 %tmp1884, label %cond_next1900, label %cond_next1888.preheader
-
-cond_next1888.preheader: ; preds = %bb1875
- %J77b.26000.2 = add i8 %tmp170171, 1 ; <i8> [#uses=1]
- br label %cond_next1888
-
-cond_next1888: ; preds = %cond_next1888, %cond_next1888.preheader
- %indvar6245 = phi i8 [ 0, %cond_next1888.preheader ], [ %indvar.next14, %cond_next1888 ] ; <i8> [#uses=2]
- %tmp1890 = add i8 %J77b.26000.2, %indvar6245 ; <i8> [#uses=2]
- %tmp187618776004 = zext i8 %tmp1890 to i32 ; <i32> [#uses=1]
- %tmp18796005 = sub i32 %tmp187618776004, %tmp17811782 ; <i32> [#uses=1]
- %tmp18806006 = getelementptr i8* %tmp1863, i32 %tmp18796005 ; <i8*> [#uses=1]
- store i8 %tmp238239, i8* %tmp18806006
- %tmp18846008 = icmp eq i8 %tmp306307, %tmp1890 ; <i1> [#uses=1]
- %indvar.next14 = add i8 %indvar6245, 1 ; <i8> [#uses=1]
- br i1 %tmp18846008, label %cond_next1900, label %cond_next1888
-
-unwind1895: ; preds = %cleanup2300, %cleanup2284, %unwind2274, %cond_next2149, %cond_true1946
- %eh_ptr1896 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
- %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 ) ; <i32> [#uses=2]
- %eh_typeid23196018 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
- %tmp23216020 = icmp eq i32 %eh_select1898, %eh_typeid23196018 ; <i1> [#uses=1]
- br i1 %tmp23216020, label %eh_then2322, label %eh_else2340
-
-cond_next1900: ; preds = %cond_next1888, %bb1875, %cleanup1773
- call void @llvm.memcpy.i32( i8* %tmp1821, i8* %tmp1863, i32 %max1819, i32 1 )
- ret void
-
-cond_true1909: ; No predecessors!
- %tmp1912 = icmp ult i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
- %tmp1916 = icmp ugt i8 %tmp238239, %tmp272273 ; <i1> [#uses=1]
- %tmp1920 = or i1 %tmp1916, %tmp1912 ; <i1> [#uses=0]
- ret void
-
-cond_true1923: ; No predecessors!
- ret void
-
-cond_next1926: ; No predecessors!
- %tmp1929.not = icmp uge i8 %tmp238239, %tmp170171 ; <i1> [#uses=1]
- %tmp1939 = icmp ugt i8 %tmp238239, %tmp306307 ; <i1> [#uses=2]
- %bothcond = and i1 %tmp1939, %tmp1929.not ; <i1> [#uses=0]
- ret void
-
-cond_true1946: ; No predecessors!
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 162 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind1895
-
-cond_next2149: ; No predecessors!
- invoke void @system__secondary_stack__ss_mark( %struct.system__secondary_stack__mark_id* %tmp46 sret )
- to label %invcont2150 unwind label %unwind1895
-
-invcont2150: ; preds = %cond_next2149
- %tmp2153 = getelementptr %struct.system__secondary_stack__mark_id* %tmp46, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp2154 = load i8** %tmp2153 ; <i8*> [#uses=3]
- %tmp2156 = getelementptr %struct.system__secondary_stack__mark_id* %tmp46, i32 0, i32 1 ; <i32*> [#uses=1]
- %tmp2157 = load i32* %tmp2156 ; <i32> [#uses=3]
- %tmp2168 = or i1 %tmp1939, %tmp1401 ; <i1> [#uses=1]
- br i1 %tmp2168, label %cond_true2171, label %cond_next2189
-
-cond_true2171: ; preds = %invcont2150
- invoke void @__gnat_rcheck_05( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 165 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind2172
-
-unwind2172: ; preds = %invcont2236, %invcont2219, %bb2205, %bb2203, %cond_true2171
- %eh_ptr2173 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
- %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 ) ; <i32> [#uses=2]
- %eh_typeid2250 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp2252 = icmp eq i32 %eh_select2175, %eh_typeid2250 ; <i1> [#uses=1]
- br i1 %tmp2252, label %eh_then2253, label %cleanup2284
-
-cond_next2189: ; preds = %invcont2150
- %tmp21902191 = and i32 %tmp218, 255 ; <i32> [#uses=1]
- %tmp2193 = sub i32 %tmp21902191, %tmp17811782 ; <i32> [#uses=1]
- %tmp2194 = getelementptr i8* %tmp1821, i32 %tmp2193 ; <i8*> [#uses=1]
- %tmp2195 = load i8* %tmp2194 ; <i8> [#uses=2]
- %tmp2197 = icmp ugt i8 %tmp2195, 6 ; <i1> [#uses=1]
- br i1 %tmp2197, label %bb2203, label %bb2205
-
-bb2203: ; preds = %cond_next2189
- invoke void @__gnat_rcheck_06( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 165 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind2172
-
-bb2205: ; preds = %cond_next2189
- %tmp22132214 = zext i8 %tmp2195 to i32 ; <i32> [#uses=1]
- invoke void @system__img_enum__image_enumeration_8( %struct.string___XUP* %tmp49 sret , i32 %tmp22132214, i64 or (i64 zext (i32 ptrtoint ([28 x i8]* @weekS.154 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.32.910 to i32) to i64), i64 32)), i8* getelementptr ([8 x i8]* @weekN.179, i32 0, i32 0) )
- to label %invcont2219 unwind label %unwind2172
-
-invcont2219: ; preds = %bb2205
- %tmp2221 = getelementptr %struct.string___XUP* %tmp49, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp2222 = load i8** %tmp2221 ; <i8*> [#uses=1]
- %tmp22225781 = ptrtoint i8* %tmp2222 to i32 ; <i32> [#uses=1]
- %tmp222257815782 = zext i32 %tmp22225781 to i64 ; <i64> [#uses=1]
- %tmp2224 = getelementptr %struct.string___XUP* %tmp49, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
- %tmp2225 = load %struct.string___XUB** %tmp2224 ; <%struct.string___XUB*> [#uses=1]
- %tmp22255777 = ptrtoint %struct.string___XUB* %tmp2225 to i32 ; <i32> [#uses=1]
- %tmp222557775778 = zext i32 %tmp22255777 to i64 ; <i64> [#uses=1]
- %tmp2225577757785779 = shl i64 %tmp222557775778, 32 ; <i64> [#uses=1]
- %tmp2225577757785779.ins = or i64 %tmp2225577757785779, %tmp222257815782 ; <i64> [#uses=1]
- invoke void @system__string_ops__str_concat( %struct.string___XUP* %tmp52 sret , i64 or (i64 zext (i32 ptrtoint ([30 x i8]* @.str14 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.30.904 to i32) to i64), i64 32)), i64 %tmp2225577757785779.ins )
- to label %invcont2236 unwind label %unwind2172
-
-invcont2236: ; preds = %invcont2219
- %tmp2238 = getelementptr %struct.string___XUP* %tmp52, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp2239 = load i8** %tmp2238 ; <i8*> [#uses=1]
- %tmp22395769 = ptrtoint i8* %tmp2239 to i32 ; <i32> [#uses=1]
- %tmp223957695770 = zext i32 %tmp22395769 to i64 ; <i64> [#uses=1]
- %tmp2241 = getelementptr %struct.string___XUP* %tmp52, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
- %tmp2242 = load %struct.string___XUB** %tmp2241 ; <%struct.string___XUB*> [#uses=1]
- %tmp22425765 = ptrtoint %struct.string___XUB* %tmp2242 to i32 ; <i32> [#uses=1]
- %tmp224257655766 = zext i32 %tmp22425765 to i64 ; <i64> [#uses=1]
- %tmp2242576557665767 = shl i64 %tmp224257655766, 32 ; <i64> [#uses=1]
- %tmp2242576557665767.ins = or i64 %tmp2242576557665767, %tmp223957695770 ; <i64> [#uses=1]
- invoke void @report__failed( i64 %tmp2242576557665767.ins )
- to label %cleanup2300 unwind label %unwind2172
-
-eh_then2253: ; preds = %unwind2172
- invoke void @__gnat_begin_handler( i8* %eh_ptr2173 )
- to label %invcont2261 unwind label %unwind2257
-
-unwind2257: ; preds = %invcont2263, %invcont2261, %eh_then2253
- %eh_ptr2258 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
- %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 ) ; <i32> [#uses=1]
- invoke void @__gnat_end_handler( i8* %eh_ptr2173 )
- to label %cleanup2284 unwind label %unwind2274
-
-invcont2261: ; preds = %eh_then2253
- %tmp2262 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp2262( )
- to label %invcont2263 unwind label %unwind2257
-
-invcont2263: ; preds = %invcont2261
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([28 x i8]* @.str15 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.32.910 to i32) to i64), i64 32)) )
- to label %cleanup2272 unwind label %unwind2257
-
-cleanup2272: ; preds = %invcont2263
- invoke void @__gnat_end_handler( i8* %eh_ptr2173 )
- to label %cleanup2300 unwind label %unwind2274
-
-unwind2274: ; preds = %cleanup2272, %unwind2257
- %eh_ptr2275 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
- %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 ) ; <i32> [#uses=1]
- %tmp229055456023 = ptrtoint i8* %tmp2154 to i32 ; <i32> [#uses=1]
- %tmp2290554555466024 = zext i32 %tmp229055456023 to i64 ; <i64> [#uses=1]
- %tmp229355426025 = zext i32 %tmp2157 to i64 ; <i64> [#uses=1]
- %tmp2293554255436026 = shl i64 %tmp229355426025, 32 ; <i64> [#uses=1]
- %tmp229355425543.ins6027 = or i64 %tmp2293554255436026, %tmp2290554555466024 ; <i64> [#uses=1]
- invoke void @system__secondary_stack__ss_release( i64 %tmp229355425543.ins6027 )
- to label %cleanup2318 unwind label %unwind1895
-
-cleanup2284: ; preds = %unwind2257, %unwind2172
- %eh_selector.24 = phi i32 [ %eh_select2175, %unwind2172 ], [ %eh_select2260, %unwind2257 ] ; <i32> [#uses=1]
- %eh_exception.26 = phi i8* [ %eh_ptr2173, %unwind2172 ], [ %eh_ptr2258, %unwind2257 ] ; <i8*> [#uses=1]
- %tmp22905545 = ptrtoint i8* %tmp2154 to i32 ; <i32> [#uses=1]
- %tmp229055455546 = zext i32 %tmp22905545 to i64 ; <i64> [#uses=1]
- %tmp22935542 = zext i32 %tmp2157 to i64 ; <i64> [#uses=1]
- %tmp229355425543 = shl i64 %tmp22935542, 32 ; <i64> [#uses=1]
- %tmp229355425543.ins = or i64 %tmp229355425543, %tmp229055455546 ; <i64> [#uses=1]
- invoke void @system__secondary_stack__ss_release( i64 %tmp229355425543.ins )
- to label %cleanup2318 unwind label %unwind1895
-
-cleanup2300: ; preds = %cleanup2272, %invcont2236
- %tmp23075539 = ptrtoint i8* %tmp2154 to i32 ; <i32> [#uses=1]
- %tmp230755395540 = zext i32 %tmp23075539 to i64 ; <i64> [#uses=1]
- %tmp23105536 = zext i32 %tmp2157 to i64 ; <i64> [#uses=1]
- %tmp231055365537 = shl i64 %tmp23105536, 32 ; <i64> [#uses=1]
- %tmp231055365537.ins = or i64 %tmp231055365537, %tmp230755395540 ; <i64> [#uses=1]
- invoke void @system__secondary_stack__ss_release( i64 %tmp231055365537.ins )
- to label %cleanup2371 unwind label %unwind1895
-
-cleanup2318: ; preds = %cleanup2284, %unwind2274
- %eh_selector.246021.1 = phi i32 [ %eh_select2277, %unwind2274 ], [ %eh_selector.24, %cleanup2284 ] ; <i32> [#uses=2]
- %eh_exception.266022.1 = phi i8* [ %eh_ptr2275, %unwind2274 ], [ %eh_exception.26, %cleanup2284 ] ; <i8*> [#uses=2]
- %eh_typeid2319 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
- %tmp2321 = icmp eq i32 %eh_selector.246021.1, %eh_typeid2319 ; <i1> [#uses=1]
- br i1 %tmp2321, label %eh_then2322, label %eh_else2340
-
-eh_then2322: ; preds = %cleanup2318, %unwind1895
- %eh_exception.216011.0 = phi i8* [ %eh_ptr1896, %unwind1895 ], [ %eh_exception.266022.1, %cleanup2318 ] ; <i8*> [#uses=3]
- invoke void @__gnat_begin_handler( i8* %eh_exception.216011.0 )
- to label %invcont2328 unwind label %unwind2326
-
-unwind2326: ; preds = %invcont2328, %eh_then2322
- %eh_ptr2327 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- invoke void @__gnat_end_handler( i8* %eh_exception.216011.0 )
- to label %cleanup2369 unwind label %unwind2334
-
-invcont2328: ; preds = %eh_then2322
- %tmp2329 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp2329( )
- to label %cleanup2332 unwind label %unwind2326
-
-cleanup2332: ; preds = %invcont2328
- invoke void @__gnat_end_handler( i8* %eh_exception.216011.0 )
- to label %cleanup2371 unwind label %unwind2334
-
-unwind2334: ; preds = %cleanup2361, %unwind2348, %cleanup2332, %unwind2326
- %eh_ptr2335 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @llvm.stackrestore( i8* %tmp1780 )
- call void @llvm.stackrestore( i8* %tmp1780 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr2335 ) ; <i32>:8 [#uses=0]
- unreachable
-
-eh_else2340: ; preds = %cleanup2318, %unwind1895
- %eh_selector.196009.1 = phi i32 [ %eh_select1898, %unwind1895 ], [ %eh_selector.246021.1, %cleanup2318 ] ; <i32> [#uses=1]
- %eh_exception.216011.1 = phi i8* [ %eh_ptr1896, %unwind1895 ], [ %eh_exception.266022.1, %cleanup2318 ] ; <i8*> [#uses=4]
- %eh_typeid2341 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp2343 = icmp eq i32 %eh_selector.196009.1, %eh_typeid2341 ; <i1> [#uses=1]
- br i1 %tmp2343, label %eh_then2344, label %cleanup2369
-
-eh_then2344: ; preds = %eh_else2340
- invoke void @__gnat_begin_handler( i8* %eh_exception.216011.1 )
- to label %invcont2350 unwind label %unwind2348
-
-unwind2348: ; preds = %invcont2352, %invcont2350, %eh_then2344
- %eh_ptr2349 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- invoke void @__gnat_end_handler( i8* %eh_exception.216011.1 )
- to label %cleanup2369 unwind label %unwind2334
-
-invcont2350: ; preds = %eh_then2344
- %tmp2351 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp2351( )
- to label %invcont2352 unwind label %unwind2348
-
-invcont2352: ; preds = %invcont2350
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([24 x i8]* @.str16 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.35.915 to i32) to i64), i64 32)) )
- to label %cleanup2361 unwind label %unwind2348
-
-cleanup2361: ; preds = %invcont2352
- invoke void @__gnat_end_handler( i8* %eh_exception.216011.1 )
- to label %cleanup2371 unwind label %unwind2334
-
-cleanup2369: ; preds = %unwind2348, %eh_else2340, %unwind2326
- %eh_exception.28 = phi i8* [ %eh_ptr2327, %unwind2326 ], [ %eh_exception.216011.1, %eh_else2340 ], [ %eh_ptr2349, %unwind2348 ] ; <i8*> [#uses=1]
- call void @llvm.stackrestore( i8* %tmp1780 )
- call void @llvm.stackrestore( i8* %tmp1780 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_exception.28 ) ; <i32>:9 [#uses=0]
- unreachable
-
-cleanup2371: ; preds = %cleanup2361, %cleanup2332, %cleanup2300
- call void @llvm.stackrestore( i8* %tmp1780 )
- call void @llvm.stackrestore( i8* %tmp1780 )
- invoke void @system__secondary_stack__ss_mark( %struct.system__secondary_stack__mark_id* %tmp55 sret )
- to label %invcont2382 unwind label %unwind2378
-
-unwind2378: ; preds = %cleanup2371
- %eh_ptr2379 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
- %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 ) ; <i32> [#uses=2]
- %eh_typeid26496037 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
- %tmp26516039 = icmp eq i32 %eh_select2381, %eh_typeid26496037 ; <i1> [#uses=1]
- br i1 %tmp26516039, label %eh_then2652, label %eh_else2666
-
-invcont2382: ; preds = %cleanup2371
- %tmp2385 = getelementptr %struct.system__secondary_stack__mark_id* %tmp55, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp2386 = load i8** %tmp2385 ; <i8*> [#uses=2]
- %tmp2388 = getelementptr %struct.system__secondary_stack__mark_id* %tmp55, i32 0, i32 1 ; <i32*> [#uses=1]
- %tmp2389 = load i32* %tmp2388 ; <i32> [#uses=2]
- %tmp2390 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=3]
- %tmp2393 = icmp ult i8 %tmp306307, %tmp170171 ; <i1> [#uses=1]
- br i1 %tmp2393, label %cond_next2417, label %cond_true2396
-
-cond_true2396: ; preds = %invcont2382
- %tmp2399 = icmp ult i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
- %tmp2403 = icmp ugt i8 %tmp306307, %tmp272273 ; <i1> [#uses=1]
- %tmp2407 = or i1 %tmp2403, %tmp2399 ; <i1> [#uses=1]
- br i1 %tmp2407, label %cond_true2410, label %cond_next2417
-
-cond_true2410: ; preds = %cond_true2396
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 177 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind2411
-
-unwind2411: ; preds = %invcont2591, %invcont2574, %bb2560, %bb2558, %bb2524, %bb2506, %cond_true2410
- %eh_ptr2412 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
- %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 ) ; <i32> [#uses=2]
- %tmp26315527 = ptrtoint i8* %tmp2386 to i32 ; <i32> [#uses=1]
- %tmp263155275528 = zext i32 %tmp26315527 to i64 ; <i64> [#uses=1]
- %tmp26345524 = zext i32 %tmp2389 to i64 ; <i64> [#uses=1]
- %tmp263455245525 = shl i64 %tmp26345524, 32 ; <i64> [#uses=1]
- %tmp263455245525.ins = or i64 %tmp263455245525, %tmp263155275528 ; <i64> [#uses=1]
- invoke void @system__secondary_stack__ss_release( i64 %tmp263455245525.ins )
- to label %cleanup2644 unwind label %unwind2618
-
-cond_next2417: ; preds = %cond_true2396, %invcont2382
- %tmp2493 = icmp ugt i8 %tmp170171, %tmp238239 ; <i1> [#uses=1]
- %tmp2500 = icmp ugt i8 %tmp238239, %tmp306307 ; <i1> [#uses=1]
- %bothcond5903 = or i1 %tmp2500, %tmp2493 ; <i1> [#uses=1]
- br i1 %bothcond5903, label %bb2506, label %cond_next2515
-
-bb2506: ; preds = %cond_next2417
- invoke void @__gnat_rcheck_05( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 180 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind2411
-
-cond_next2515: ; preds = %cond_next2417
- br i1 %tmp240, label %bb2524, label %bb2526
-
-bb2524: ; preds = %cond_next2515
- invoke void @__gnat_rcheck_06( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 180 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind2411
-
-bb2526: ; preds = %cond_next2515
- br i1 %tmp274, label %bb2558, label %bb2560
-
-bb2558: ; preds = %bb2526
- invoke void @__gnat_rcheck_06( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 182 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind2411
-
-bb2560: ; preds = %bb2526
- invoke void @system__img_enum__image_enumeration_8( %struct.string___XUP* %tmp58 sret , i32 %tmp13831384, i64 or (i64 zext (i32 ptrtoint ([28 x i8]* @weekS.154 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.32.910 to i32) to i64), i64 32)), i8* getelementptr ([8 x i8]* @weekN.179, i32 0, i32 0) )
- to label %invcont2574 unwind label %unwind2411
-
-invcont2574: ; preds = %bb2560
- %tmp2576 = getelementptr %struct.string___XUP* %tmp58, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp2577 = load i8** %tmp2576 ; <i8*> [#uses=1]
- %tmp25775747 = ptrtoint i8* %tmp2577 to i32 ; <i32> [#uses=1]
- %tmp257757475748 = zext i32 %tmp25775747 to i64 ; <i64> [#uses=1]
- %tmp2579 = getelementptr %struct.string___XUP* %tmp58, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
- %tmp2580 = load %struct.string___XUB** %tmp2579 ; <%struct.string___XUB*> [#uses=1]
- %tmp25805743 = ptrtoint %struct.string___XUB* %tmp2580 to i32 ; <i32> [#uses=1]
- %tmp258057435744 = zext i32 %tmp25805743 to i64 ; <i64> [#uses=1]
- %tmp2580574357445745 = shl i64 %tmp258057435744, 32 ; <i64> [#uses=1]
- %tmp2580574357445745.ins = or i64 %tmp2580574357445745, %tmp257757475748 ; <i64> [#uses=1]
- invoke void @system__string_ops__str_concat( %struct.string___XUP* %tmp61 sret , i64 or (i64 zext (i32 ptrtoint ([30 x i8]* @.str17 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.30.904 to i32) to i64), i64 32)), i64 %tmp2580574357445745.ins )
- to label %invcont2591 unwind label %unwind2411
-
-invcont2591: ; preds = %invcont2574
- %tmp2593 = getelementptr %struct.string___XUP* %tmp61, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp2594 = load i8** %tmp2593 ; <i8*> [#uses=1]
- %tmp25945735 = ptrtoint i8* %tmp2594 to i32 ; <i32> [#uses=1]
- %tmp259457355736 = zext i32 %tmp25945735 to i64 ; <i64> [#uses=1]
- %tmp2596 = getelementptr %struct.string___XUP* %tmp61, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
- %tmp2597 = load %struct.string___XUB** %tmp2596 ; <%struct.string___XUB*> [#uses=1]
- %tmp25975731 = ptrtoint %struct.string___XUB* %tmp2597 to i32 ; <i32> [#uses=1]
- %tmp259757315732 = zext i32 %tmp25975731 to i64 ; <i64> [#uses=1]
- %tmp2597573157325733 = shl i64 %tmp259757315732, 32 ; <i64> [#uses=1]
- %tmp2597573157325733.ins = or i64 %tmp2597573157325733, %tmp259457355736 ; <i64> [#uses=1]
- invoke void @report__failed( i64 %tmp2597573157325733.ins )
- to label %cleanup2604 unwind label %unwind2411
-
-cleanup2604: ; preds = %invcont2591
- %tmp26105533 = ptrtoint i8* %tmp2386 to i32 ; <i32> [#uses=1]
- %tmp261055335534 = zext i32 %tmp26105533 to i64 ; <i64> [#uses=1]
- %tmp26135530 = zext i32 %tmp2389 to i64 ; <i64> [#uses=1]
- %tmp261355305531 = shl i64 %tmp26135530, 32 ; <i64> [#uses=1]
- %tmp261355305531.ins = or i64 %tmp261355305531, %tmp261055335534 ; <i64> [#uses=1]
- invoke void @system__secondary_stack__ss_release( i64 %tmp261355305531.ins )
- to label %cleanup2642 unwind label %unwind2618
-
-unwind2618: ; preds = %cleanup2604, %unwind2411
- %eh_ptr2619 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
- %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 ) ; <i32> [#uses=2]
- call void @llvm.stackrestore( i8* %tmp2390 )
- %eh_typeid26493 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
- %tmp26514 = icmp eq i32 %eh_select2621, %eh_typeid26493 ; <i1> [#uses=1]
- br i1 %tmp26514, label %eh_then2652, label %eh_else2666
-
-cleanup2642: ; preds = %cleanup2604
- call void @llvm.stackrestore( i8* %tmp2390 )
- %tmp26946042 = icmp ult i8 %tmp238239, %tmp137138 ; <i1> [#uses=1]
- br i1 %tmp26946042, label %cond_next2718, label %cond_true2697
-
-cleanup2644: ; preds = %unwind2411
- call void @llvm.stackrestore( i8* %tmp2390 )
- %eh_typeid2649 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
- %tmp2651 = icmp eq i32 %eh_select2414, %eh_typeid2649 ; <i1> [#uses=1]
- br i1 %tmp2651, label %eh_then2652, label %eh_else2666
-
-eh_then2652: ; preds = %cleanup2644, %unwind2618, %unwind2378
- %eh_exception.296030.0 = phi i8* [ %eh_ptr2379, %unwind2378 ], [ %eh_ptr2619, %unwind2618 ], [ %eh_ptr2412, %cleanup2644 ] ; <i8*> [#uses=3]
- invoke void @__gnat_begin_handler( i8* %eh_exception.296030.0 )
- to label %invcont2658 unwind label %unwind2656
-
-unwind2656: ; preds = %invcont2658, %eh_then2652
- %eh_ptr2657 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_exception.296030.0 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr2657 ) ; <i32>:10 [#uses=0]
- unreachable
-
-invcont2658: ; preds = %eh_then2652
- %tmp2659 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp2659( )
- to label %cleanup2662 unwind label %unwind2656
-
-cleanup2662: ; preds = %invcont2658
- call void @__gnat_end_handler( i8* %eh_exception.296030.0 )
- %tmp26946043 = icmp ult i8 %tmp238239, %tmp137138 ; <i1> [#uses=1]
- br i1 %tmp26946043, label %cond_next2718, label %cond_true2697
-
-eh_else2666: ; preds = %cleanup2644, %unwind2618, %unwind2378
- %eh_selector.256028.1 = phi i32 [ %eh_select2381, %unwind2378 ], [ %eh_select2621, %unwind2618 ], [ %eh_select2414, %cleanup2644 ] ; <i32> [#uses=1]
- %eh_exception.296030.1 = phi i8* [ %eh_ptr2379, %unwind2378 ], [ %eh_ptr2619, %unwind2618 ], [ %eh_ptr2412, %cleanup2644 ] ; <i8*> [#uses=4]
- %eh_typeid2667 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp2669 = icmp eq i32 %eh_selector.256028.1, %eh_typeid2667 ; <i1> [#uses=1]
- br i1 %tmp2669, label %eh_then2670, label %Unwind
-
-eh_then2670: ; preds = %eh_else2666
- invoke void @__gnat_begin_handler( i8* %eh_exception.296030.1 )
- to label %invcont2676 unwind label %unwind2674
-
-unwind2674: ; preds = %invcont2678, %invcont2676, %eh_then2670
- %eh_ptr2675 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_exception.296030.1 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr2675 ) ; <i32>:11 [#uses=0]
- unreachable
-
-invcont2676: ; preds = %eh_then2670
- %tmp2677 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp2677( )
- to label %invcont2678 unwind label %unwind2674
-
-invcont2678: ; preds = %invcont2676
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([24 x i8]* @.str18 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.35.915 to i32) to i64), i64 32)) )
- to label %cleanup2687 unwind label %unwind2674
-
-cleanup2687: ; preds = %invcont2678
- call void @__gnat_end_handler( i8* %eh_exception.296030.1 )
- %tmp2694 = icmp ult i8 %tmp238239, %tmp137138 ; <i1> [#uses=1]
- br i1 %tmp2694, label %cond_next2718, label %cond_true2697
-
-cond_true2697: ; preds = %cleanup2687, %cleanup2662, %cleanup2642
- %tmp2700 = icmp ult i8 %tmp137138, %tmp204205 ; <i1> [#uses=1]
- %tmp2704 = icmp ugt i8 %tmp238239, %tmp272273 ; <i1> [#uses=1]
- %tmp2708 = or i1 %tmp2704, %tmp2700 ; <i1> [#uses=1]
- br i1 %tmp2708, label %cond_true2711, label %cond_next2718
-
-cond_true2711: ; preds = %cond_true2697
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 192 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind2712
-
-unwind2712: ; preds = %cleanup2990, %unwind2975, %cond_true2711
- %eh_ptr2713 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
- %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 ) ; <i32> [#uses=2]
- %eh_typeid29996053 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
- %tmp30016055 = icmp eq i32 %eh_select2715, %eh_typeid29996053 ; <i1> [#uses=1]
- br i1 %tmp30016055, label %eh_then3002, label %eh_else3016
-
-cond_next2718: ; preds = %cond_true2697, %cleanup2687, %cleanup2662, %cleanup2642
- invoke void @system__secondary_stack__ss_mark( %struct.system__secondary_stack__mark_id* %tmp63 sret )
- to label %invcont2766 unwind label %unwind2762
-
-unwind2762: ; preds = %cond_next2718
- %eh_ptr2763 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
- %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 ) ; <i32> [#uses=2]
- %eh_typeid29686060 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp29706061 = icmp eq i32 %eh_select2765, %eh_typeid29686060 ; <i1> [#uses=1]
- br i1 %tmp29706061, label %eh_then2971, label %cleanup2998
-
-invcont2766: ; preds = %cond_next2718
- %tmp2769 = getelementptr %struct.system__secondary_stack__mark_id* %tmp63, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp2770 = load i8** %tmp2769 ; <i8*> [#uses=2]
- %tmp2772 = getelementptr %struct.system__secondary_stack__mark_id* %tmp63, i32 0, i32 1 ; <i32*> [#uses=1]
- %tmp2773 = load i32* %tmp2772 ; <i32> [#uses=2]
- %tmp2774 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=3]
- %tmp2808 = icmp ugt i8 %tmp137138, %tmp204205 ; <i1> [#uses=1]
- %tmp2815 = icmp ult i8 %tmp238239, %tmp204205 ; <i1> [#uses=1]
- %bothcond5904 = or i1 %tmp2815, %tmp2808 ; <i1> [#uses=1]
- br i1 %bothcond5904, label %bb2821, label %cond_next2834
-
-bb2821: ; preds = %invcont2766
- invoke void @__gnat_rcheck_05( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 198 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind2822
-
-unwind2822: ; preds = %invcont2910, %invcont2893, %bb2879, %bb2877, %bb2843, %bb2821
- %eh_ptr2823 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
- %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 ) ; <i32> [#uses=2]
- %tmp29295521 = ptrtoint i8* %tmp2770 to i32 ; <i32> [#uses=1]
- %tmp292955215522 = zext i32 %tmp29295521 to i64 ; <i64> [#uses=1]
- %tmp29325518 = zext i32 %tmp2773 to i64 ; <i64> [#uses=1]
- %tmp293255185519 = shl i64 %tmp29325518, 32 ; <i64> [#uses=1]
- %tmp293255185519.ins = or i64 %tmp293255185519, %tmp292955215522 ; <i64> [#uses=1]
- invoke void @system__secondary_stack__ss_release( i64 %tmp293255185519.ins )
- to label %cleanup2963 unwind label %unwind2937
-
-cond_next2834: ; preds = %invcont2766
- br i1 %tmp206, label %bb2843, label %bb2845
-
-bb2843: ; preds = %cond_next2834
- invoke void @__gnat_rcheck_06( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 198 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind2822
-
-bb2845: ; preds = %cond_next2834
- br i1 %tmp274, label %bb2877, label %bb2879
-
-bb2877: ; preds = %bb2845
- invoke void @__gnat_rcheck_06( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 200 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind2822
-
-bb2879: ; preds = %bb2845
- invoke void @system__img_enum__image_enumeration_8( %struct.string___XUP* %tmp66 sret , i32 %tmp13831384, i64 or (i64 zext (i32 ptrtoint ([28 x i8]* @weekS.154 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.32.910 to i32) to i64), i64 32)), i8* getelementptr ([8 x i8]* @weekN.179, i32 0, i32 0) )
- to label %invcont2893 unwind label %unwind2822
-
-invcont2893: ; preds = %bb2879
- %tmp2895 = getelementptr %struct.string___XUP* %tmp66, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp2896 = load i8** %tmp2895 ; <i8*> [#uses=1]
- %tmp28965718 = ptrtoint i8* %tmp2896 to i32 ; <i32> [#uses=1]
- %tmp289657185719 = zext i32 %tmp28965718 to i64 ; <i64> [#uses=1]
- %tmp2898 = getelementptr %struct.string___XUP* %tmp66, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
- %tmp2899 = load %struct.string___XUB** %tmp2898 ; <%struct.string___XUB*> [#uses=1]
- %tmp28995714 = ptrtoint %struct.string___XUB* %tmp2899 to i32 ; <i32> [#uses=1]
- %tmp289957145715 = zext i32 %tmp28995714 to i64 ; <i64> [#uses=1]
- %tmp2899571457155716 = shl i64 %tmp289957145715, 32 ; <i64> [#uses=1]
- %tmp2899571457155716.ins = or i64 %tmp2899571457155716, %tmp289657185719 ; <i64> [#uses=1]
- invoke void @system__string_ops__str_concat( %struct.string___XUP* %tmp69 sret , i64 or (i64 zext (i32 ptrtoint ([31 x i8]* @.str19 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.98.1466 to i32) to i64), i64 32)), i64 %tmp2899571457155716.ins )
- to label %invcont2910 unwind label %unwind2822
-
-invcont2910: ; preds = %invcont2893
- %tmp2912 = getelementptr %struct.string___XUP* %tmp69, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp2913 = load i8** %tmp2912 ; <i8*> [#uses=1]
- %tmp29135706 = ptrtoint i8* %tmp2913 to i32 ; <i32> [#uses=1]
- %tmp291357065707 = zext i32 %tmp29135706 to i64 ; <i64> [#uses=1]
- %tmp2915 = getelementptr %struct.string___XUP* %tmp69, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
- %tmp2916 = load %struct.string___XUB** %tmp2915 ; <%struct.string___XUB*> [#uses=1]
- %tmp29165702 = ptrtoint %struct.string___XUB* %tmp2916 to i32 ; <i32> [#uses=1]
- %tmp291657025703 = zext i32 %tmp29165702 to i64 ; <i64> [#uses=1]
- %tmp2916570257035704 = shl i64 %tmp291657025703, 32 ; <i64> [#uses=1]
- %tmp2916570257035704.ins = or i64 %tmp2916570257035704, %tmp291357065707 ; <i64> [#uses=1]
- invoke void @report__failed( i64 %tmp2916570257035704.ins )
- to label %cleanup2943 unwind label %unwind2822
-
-unwind2937: ; preds = %cleanup2943, %unwind2822
- %eh_ptr2938 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
- %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 ) ; <i32> [#uses=2]
- call void @llvm.stackrestore( i8* %tmp2774 )
- %eh_typeid29685 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp29706 = icmp eq i32 %eh_select2940, %eh_typeid29685 ; <i1> [#uses=1]
- br i1 %tmp29706, label %eh_then2971, label %cleanup2998
-
-cleanup2943: ; preds = %invcont2910
- %tmp29505515 = ptrtoint i8* %tmp2770 to i32 ; <i32> [#uses=1]
- %tmp295055155516 = zext i32 %tmp29505515 to i64 ; <i64> [#uses=1]
- %tmp29535512 = zext i32 %tmp2773 to i64 ; <i64> [#uses=1]
- %tmp295355125513 = shl i64 %tmp29535512, 32 ; <i64> [#uses=1]
- %tmp295355125513.ins = or i64 %tmp295355125513, %tmp295055155516 ; <i64> [#uses=1]
- invoke void @system__secondary_stack__ss_release( i64 %tmp295355125513.ins )
- to label %cleanup2961 unwind label %unwind2937
-
-cleanup2961: ; preds = %cleanup2943
- call void @llvm.stackrestore( i8* %tmp2774 )
- %tmp3044.not6066 = icmp uge i8 %tmp272273, %tmp170171 ; <i1> [#uses=1]
- %tmp30506067 = icmp ult i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
- %bothcond59056068 = and i1 %tmp3044.not6066, %tmp30506067 ; <i1> [#uses=1]
- br i1 %bothcond59056068, label %cond_true3061, label %cond_next3068
-
-cleanup2963: ; preds = %unwind2822
- call void @llvm.stackrestore( i8* %tmp2774 )
- %eh_typeid2968 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp2970 = icmp eq i32 %eh_select2825, %eh_typeid2968 ; <i1> [#uses=1]
- br i1 %tmp2970, label %eh_then2971, label %cleanup2998
-
-eh_then2971: ; preds = %cleanup2963, %unwind2937, %unwind2762
- %eh_exception.356056.0 = phi i8* [ %eh_ptr2763, %unwind2762 ], [ %eh_ptr2938, %unwind2937 ], [ %eh_ptr2823, %cleanup2963 ] ; <i8*> [#uses=3]
- invoke void @__gnat_begin_handler( i8* %eh_exception.356056.0 )
- to label %invcont2979 unwind label %unwind2975
-
-unwind2975: ; preds = %invcont2981, %invcont2979, %eh_then2971
- %eh_ptr2976 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
- %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 ) ; <i32> [#uses=1]
- invoke void @__gnat_end_handler( i8* %eh_exception.356056.0 )
- to label %cleanup2998 unwind label %unwind2712
-
-invcont2979: ; preds = %eh_then2971
- %tmp2980 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp2980( )
- to label %invcont2981 unwind label %unwind2975
-
-invcont2981: ; preds = %invcont2979
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([46 x i8]* @.str20 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.101.1473 to i32) to i64), i64 32)) )
- to label %cleanup2990 unwind label %unwind2975
-
-cleanup2990: ; preds = %invcont2981
- invoke void @__gnat_end_handler( i8* %eh_exception.356056.0 )
- to label %finally2997 unwind label %unwind2712
-
-cleanup2998: ; preds = %unwind2975, %cleanup2963, %unwind2937, %unwind2762
- %eh_selector.29 = phi i32 [ %eh_select2765, %unwind2762 ], [ %eh_select2940, %unwind2937 ], [ %eh_select2825, %cleanup2963 ], [ %eh_select2978, %unwind2975 ] ; <i32> [#uses=2]
- %eh_exception.33 = phi i8* [ %eh_ptr2763, %unwind2762 ], [ %eh_ptr2938, %unwind2937 ], [ %eh_ptr2823, %cleanup2963 ], [ %eh_ptr2976, %unwind2975 ] ; <i8*> [#uses=2]
- %eh_typeid2999 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
- %tmp3001 = icmp eq i32 %eh_selector.29, %eh_typeid2999 ; <i1> [#uses=1]
- br i1 %tmp3001, label %eh_then3002, label %eh_else3016
-
-eh_then3002: ; preds = %cleanup2998, %unwind2712
- %eh_exception.336046.0 = phi i8* [ %eh_ptr2713, %unwind2712 ], [ %eh_exception.33, %cleanup2998 ] ; <i8*> [#uses=3]
- invoke void @__gnat_begin_handler( i8* %eh_exception.336046.0 )
- to label %invcont3008 unwind label %unwind3006
-
-unwind3006: ; preds = %invcont3008, %eh_then3002
- %eh_ptr3007 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_exception.336046.0 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr3007 ) ; <i32>:12 [#uses=0]
- unreachable
-
-invcont3008: ; preds = %eh_then3002
- %tmp3009 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp3009( )
- to label %cleanup3012 unwind label %unwind3006
-
-cleanup3012: ; preds = %invcont3008
- call void @__gnat_end_handler( i8* %eh_exception.336046.0 )
- %tmp3044.not6069 = icmp uge i8 %tmp272273, %tmp170171 ; <i1> [#uses=1]
- %tmp30506070 = icmp ult i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
- %bothcond59056071 = and i1 %tmp3044.not6069, %tmp30506070 ; <i1> [#uses=1]
- br i1 %bothcond59056071, label %cond_true3061, label %cond_next3068
-
-eh_else3016: ; preds = %cleanup2998, %unwind2712
- %eh_selector.296044.1 = phi i32 [ %eh_select2715, %unwind2712 ], [ %eh_selector.29, %cleanup2998 ] ; <i32> [#uses=1]
- %eh_exception.336046.1 = phi i8* [ %eh_ptr2713, %unwind2712 ], [ %eh_exception.33, %cleanup2998 ] ; <i8*> [#uses=4]
- %eh_typeid3017 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp3019 = icmp eq i32 %eh_selector.296044.1, %eh_typeid3017 ; <i1> [#uses=1]
- br i1 %tmp3019, label %eh_then3020, label %Unwind
-
-eh_then3020: ; preds = %eh_else3016
- invoke void @__gnat_begin_handler( i8* %eh_exception.336046.1 )
- to label %invcont3026 unwind label %unwind3024
-
-unwind3024: ; preds = %invcont3028, %invcont3026, %eh_then3020
- %eh_ptr3025 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_exception.336046.1 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr3025 ) ; <i32>:13 [#uses=0]
- unreachable
-
-invcont3026: ; preds = %eh_then3020
- %tmp3027 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp3027( )
- to label %invcont3028 unwind label %unwind3024
-
-invcont3028: ; preds = %invcont3026
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([25 x i8]* @.str21 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.104.1478 to i32) to i64), i64 32)) )
- to label %cleanup3037 unwind label %unwind3024
-
-cleanup3037: ; preds = %invcont3028
- call void @__gnat_end_handler( i8* %eh_exception.336046.1 )
- br label %finally2997
-
-finally2997: ; preds = %cleanup3037, %cleanup2990
- %tmp3044.not = icmp uge i8 %tmp272273, %tmp170171 ; <i1> [#uses=1]
- %tmp3050 = icmp ult i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
- %bothcond5905 = and i1 %tmp3044.not, %tmp3050 ; <i1> [#uses=1]
- br i1 %bothcond5905, label %cond_true3061, label %cond_next3068
-
-cond_true3061: ; preds = %finally2997, %cleanup3012, %cleanup2961
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 214 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind3062
-
-unwind3062: ; preds = %cleanup3340, %unwind3325, %cond_true3061
- %eh_ptr3063 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
- %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 ) ; <i32> [#uses=2]
- %eh_typeid33496081 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
- %tmp33516083 = icmp eq i32 %eh_select3065, %eh_typeid33496081 ; <i1> [#uses=1]
- br i1 %tmp33516083, label %eh_then3352, label %eh_else3366
-
-cond_next3068: ; preds = %finally2997, %cleanup3012, %cleanup2961
- invoke void @system__secondary_stack__ss_mark( %struct.system__secondary_stack__mark_id* %tmp72 sret )
- to label %invcont3116 unwind label %unwind3112
-
-unwind3112: ; preds = %cond_next3068
- %eh_ptr3113 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
- %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 ) ; <i32> [#uses=2]
- %eh_typeid33186088 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp33206089 = icmp eq i32 %eh_select3115, %eh_typeid33186088 ; <i1> [#uses=1]
- br i1 %tmp33206089, label %eh_then3321, label %cleanup3348
-
-invcont3116: ; preds = %cond_next3068
- %tmp3119 = getelementptr %struct.system__secondary_stack__mark_id* %tmp72, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp3120 = load i8** %tmp3119 ; <i8*> [#uses=2]
- %tmp3122 = getelementptr %struct.system__secondary_stack__mark_id* %tmp72, i32 0, i32 1 ; <i32*> [#uses=1]
- %tmp3123 = load i32* %tmp3122 ; <i32> [#uses=2]
- %tmp3124 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=3]
- %tmp3158 = icmp ugt i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
- %bothcond5906 = or i1 %tmp364, %tmp3158 ; <i1> [#uses=1]
- br i1 %bothcond5906, label %bb3171, label %cond_next3184
-
-bb3171: ; preds = %invcont3116
- invoke void @__gnat_rcheck_05( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 220 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind3172
-
-unwind3172: ; preds = %invcont3260, %invcont3243, %bb3229, %bb3227, %bb3193, %bb3171
- %eh_ptr3173 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
- %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 ) ; <i32> [#uses=2]
- %tmp32795509 = ptrtoint i8* %tmp3120 to i32 ; <i32> [#uses=1]
- %tmp327955095510 = zext i32 %tmp32795509 to i64 ; <i64> [#uses=1]
- %tmp32825506 = zext i32 %tmp3123 to i64 ; <i64> [#uses=1]
- %tmp328255065507 = shl i64 %tmp32825506, 32 ; <i64> [#uses=1]
- %tmp328255065507.ins = or i64 %tmp328255065507, %tmp327955095510 ; <i64> [#uses=1]
- invoke void @system__secondary_stack__ss_release( i64 %tmp328255065507.ins )
- to label %cleanup3313 unwind label %unwind3287
-
-cond_next3184: ; preds = %invcont3116
- br i1 %tmp206, label %bb3193, label %bb3195
-
-bb3193: ; preds = %cond_next3184
- invoke void @__gnat_rcheck_06( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 220 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind3172
-
-bb3195: ; preds = %cond_next3184
- br i1 %tmp274, label %bb3227, label %bb3229
-
-bb3227: ; preds = %bb3195
- invoke void @__gnat_rcheck_06( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 222 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind3172
-
-bb3229: ; preds = %bb3195
- invoke void @system__img_enum__image_enumeration_8( %struct.string___XUP* %tmp75 sret , i32 %tmp13831384, i64 or (i64 zext (i32 ptrtoint ([28 x i8]* @weekS.154 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.32.910 to i32) to i64), i64 32)), i8* getelementptr ([8 x i8]* @weekN.179, i32 0, i32 0) )
- to label %invcont3243 unwind label %unwind3172
-
-invcont3243: ; preds = %bb3229
- %tmp3245 = getelementptr %struct.string___XUP* %tmp75, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp3246 = load i8** %tmp3245 ; <i8*> [#uses=1]
- %tmp32465684 = ptrtoint i8* %tmp3246 to i32 ; <i32> [#uses=1]
- %tmp324656845685 = zext i32 %tmp32465684 to i64 ; <i64> [#uses=1]
- %tmp3248 = getelementptr %struct.string___XUP* %tmp75, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
- %tmp3249 = load %struct.string___XUB** %tmp3248 ; <%struct.string___XUB*> [#uses=1]
- %tmp32495680 = ptrtoint %struct.string___XUB* %tmp3249 to i32 ; <i32> [#uses=1]
- %tmp324956805681 = zext i32 %tmp32495680 to i64 ; <i64> [#uses=1]
- %tmp3249568056815682 = shl i64 %tmp324956805681, 32 ; <i64> [#uses=1]
- %tmp3249568056815682.ins = or i64 %tmp3249568056815682, %tmp324656845685 ; <i64> [#uses=1]
- invoke void @system__string_ops__str_concat( %struct.string___XUP* %tmp78 sret , i64 or (i64 zext (i32 ptrtoint ([31 x i8]* @.str22 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.98.1466 to i32) to i64), i64 32)), i64 %tmp3249568056815682.ins )
- to label %invcont3260 unwind label %unwind3172
-
-invcont3260: ; preds = %invcont3243
- %tmp3262 = getelementptr %struct.string___XUP* %tmp78, i32 0, i32 0 ; <i8**> [#uses=1]
- %tmp3263 = load i8** %tmp3262 ; <i8*> [#uses=1]
- %tmp32635672 = ptrtoint i8* %tmp3263 to i32 ; <i32> [#uses=1]
- %tmp326356725673 = zext i32 %tmp32635672 to i64 ; <i64> [#uses=1]
- %tmp3265 = getelementptr %struct.string___XUP* %tmp78, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
- %tmp3266 = load %struct.string___XUB** %tmp3265 ; <%struct.string___XUB*> [#uses=1]
- %tmp32665668 = ptrtoint %struct.string___XUB* %tmp3266 to i32 ; <i32> [#uses=1]
- %tmp326656685669 = zext i32 %tmp32665668 to i64 ; <i64> [#uses=1]
- %tmp3266566856695670 = shl i64 %tmp326656685669, 32 ; <i64> [#uses=1]
- %tmp3266566856695670.ins = or i64 %tmp3266566856695670, %tmp326356725673 ; <i64> [#uses=1]
- invoke void @report__failed( i64 %tmp3266566856695670.ins )
- to label %cleanup3293 unwind label %unwind3172
-
-unwind3287: ; preds = %cleanup3293, %unwind3172
- %eh_ptr3288 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
- %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 ) ; <i32> [#uses=2]
- call void @llvm.stackrestore( i8* %tmp3124 )
- %eh_typeid33187 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp33208 = icmp eq i32 %eh_select3290, %eh_typeid33187 ; <i1> [#uses=1]
- br i1 %tmp33208, label %eh_then3321, label %cleanup3348
-
-cleanup3293: ; preds = %invcont3260
- %tmp33005503 = ptrtoint i8* %tmp3120 to i32 ; <i32> [#uses=1]
- %tmp330055035504 = zext i32 %tmp33005503 to i64 ; <i64> [#uses=1]
- %tmp33035500 = zext i32 %tmp3123 to i64 ; <i64> [#uses=1]
- %tmp330355005501 = shl i64 %tmp33035500, 32 ; <i64> [#uses=1]
- %tmp330355005501.ins = or i64 %tmp330355005501, %tmp330055035504 ; <i64> [#uses=1]
- invoke void @system__secondary_stack__ss_release( i64 %tmp330355005501.ins )
- to label %cleanup3311 unwind label %unwind3287
-
-cleanup3311: ; preds = %cleanup3293
- call void @llvm.stackrestore( i8* %tmp3124 )
- br label %finally3347
-
-cleanup3313: ; preds = %unwind3172
- call void @llvm.stackrestore( i8* %tmp3124 )
- %eh_typeid3318 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp3320 = icmp eq i32 %eh_select3175, %eh_typeid3318 ; <i1> [#uses=1]
- br i1 %tmp3320, label %eh_then3321, label %cleanup3348
-
-eh_then3321: ; preds = %cleanup3313, %unwind3287, %unwind3112
- %eh_exception.416084.0 = phi i8* [ %eh_ptr3113, %unwind3112 ], [ %eh_ptr3288, %unwind3287 ], [ %eh_ptr3173, %cleanup3313 ] ; <i8*> [#uses=3]
- invoke void @__gnat_begin_handler( i8* %eh_exception.416084.0 )
- to label %invcont3329 unwind label %unwind3325
-
-unwind3325: ; preds = %invcont3331, %invcont3329, %eh_then3321
- %eh_ptr3326 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
- %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 ) ; <i32> [#uses=1]
- invoke void @__gnat_end_handler( i8* %eh_exception.416084.0 )
- to label %cleanup3348 unwind label %unwind3062
-
-invcont3329: ; preds = %eh_then3321
- %tmp3330 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp3330( )
- to label %invcont3331 unwind label %unwind3325
-
-invcont3331: ; preds = %invcont3329
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([46 x i8]* @.str20 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.101.1473 to i32) to i64), i64 32)) )
- to label %cleanup3340 unwind label %unwind3325
-
-cleanup3340: ; preds = %invcont3331
- invoke void @__gnat_end_handler( i8* %eh_exception.416084.0 )
- to label %finally3347 unwind label %unwind3062
-
-cleanup3348: ; preds = %unwind3325, %cleanup3313, %unwind3287, %unwind3112
- %eh_selector.35 = phi i32 [ %eh_select3115, %unwind3112 ], [ %eh_select3290, %unwind3287 ], [ %eh_select3175, %cleanup3313 ], [ %eh_select3328, %unwind3325 ] ; <i32> [#uses=2]
- %eh_exception.39 = phi i8* [ %eh_ptr3113, %unwind3112 ], [ %eh_ptr3288, %unwind3287 ], [ %eh_ptr3173, %cleanup3313 ], [ %eh_ptr3326, %unwind3325 ] ; <i8*> [#uses=2]
- %eh_typeid3349 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
- %tmp3351 = icmp eq i32 %eh_selector.35, %eh_typeid3349 ; <i1> [#uses=1]
- br i1 %tmp3351, label %eh_then3352, label %eh_else3366
-
-eh_then3352: ; preds = %cleanup3348, %unwind3062
- %eh_exception.396074.0 = phi i8* [ %eh_ptr3063, %unwind3062 ], [ %eh_exception.39, %cleanup3348 ] ; <i8*> [#uses=3]
- invoke void @__gnat_begin_handler( i8* %eh_exception.396074.0 )
- to label %invcont3358 unwind label %unwind3356
-
-unwind3356: ; preds = %invcont3358, %eh_then3352
- %eh_ptr3357 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_exception.396074.0 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr3357 ) ; <i32>:14 [#uses=0]
- unreachable
-
-invcont3358: ; preds = %eh_then3352
- %tmp3359 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp3359( )
- to label %cleanup3362 unwind label %unwind3356
-
-cleanup3362: ; preds = %invcont3358
- call void @__gnat_end_handler( i8* %eh_exception.396074.0 )
- br label %finally3347
-
-eh_else3366: ; preds = %cleanup3348, %unwind3062
- %eh_selector.356072.1 = phi i32 [ %eh_select3065, %unwind3062 ], [ %eh_selector.35, %cleanup3348 ] ; <i32> [#uses=1]
- %eh_exception.396074.1 = phi i8* [ %eh_ptr3063, %unwind3062 ], [ %eh_exception.39, %cleanup3348 ] ; <i8*> [#uses=4]
- %eh_typeid3367 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp3369 = icmp eq i32 %eh_selector.356072.1, %eh_typeid3367 ; <i1> [#uses=1]
- br i1 %tmp3369, label %eh_then3370, label %Unwind
-
-eh_then3370: ; preds = %eh_else3366
- invoke void @__gnat_begin_handler( i8* %eh_exception.396074.1 )
- to label %invcont3376 unwind label %unwind3374
-
-unwind3374: ; preds = %invcont3378, %invcont3376, %eh_then3370
- %eh_ptr3375 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_exception.396074.1 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr3375 ) ; <i32>:15 [#uses=0]
- unreachable
-
-invcont3376: ; preds = %eh_then3370
- %tmp3377 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp3377( )
- to label %invcont3378 unwind label %unwind3374
-
-invcont3378: ; preds = %invcont3376
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([25 x i8]* @.str23 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.104.1478 to i32) to i64), i64 32)) )
- to label %cleanup3387 unwind label %unwind3374
-
-cleanup3387: ; preds = %invcont3378
- call void @__gnat_end_handler( i8* %eh_exception.396074.1 )
- br label %finally3347
-
-finally3347: ; preds = %cleanup3387, %cleanup3362, %cleanup3340, %cleanup3311
- %tmp3392 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=2]
- %tmp3398 = invoke i32 @report__ident_int( i32 -5 )
- to label %invcont3397 unwind label %unwind3393 ; <i32> [#uses=4]
-
-unwind3393: ; preds = %cond_true3555, %cond_true3543, %cond_next3451, %cond_true3448, %cond_true3420, %finally3347
- %eh_ptr3394 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
- %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 ) ; <i32> [#uses=1]
- call void @llvm.stackrestore( i8* %tmp3392 )
- %eh_typeid3571 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp3573 = icmp eq i32 %eh_select3396, %eh_typeid3571 ; <i1> [#uses=1]
- br i1 %tmp3573, label %eh_then3574, label %Unwind
-
-invcont3397: ; preds = %finally3347
- %tmp3405 = icmp slt i32 %tmp3398, %tmp384 ; <i1> [#uses=2]
- %tmp3413 = icmp sgt i32 %tmp3398, %tmp394 ; <i1> [#uses=1]
- %tmp3417 = or i1 %tmp3405, %tmp3413 ; <i1> [#uses=1]
- br i1 %tmp3417, label %cond_true3420, label %cond_next3422
-
-cond_true3420: ; preds = %invcont3397
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 238 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind3393
-
-cond_next3422: ; preds = %invcont3397
- %tmp3426 = icmp slt i32 %tmp3398, -5 ; <i1> [#uses=1]
- br i1 %tmp3426, label %cond_true3429, label %cond_next3451
-
-cond_true3429: ; preds = %cond_next3422
- %tmp3441 = icmp slt i32 %tmp394, -6 ; <i1> [#uses=1]
- %tmp3445 = or i1 %tmp3405, %tmp3441 ; <i1> [#uses=1]
- br i1 %tmp3445, label %cond_true3448, label %cond_next3451
-
-cond_true3448: ; preds = %cond_true3429
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 238 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind3393
-
-cond_next3451: ; preds = %cond_true3429, %cond_next3422
- %tmp3521 = invoke i32 @report__ident_int( i32 -5 )
- to label %invcont3520 unwind label %unwind3393 ; <i32> [#uses=3]
-
-invcont3520: ; preds = %cond_next3451
- %tmp3528 = icmp slt i32 %tmp3521, %tmp384 ; <i1> [#uses=1]
- %tmp3536 = icmp sgt i32 %tmp3521, %tmp394 ; <i1> [#uses=1]
- %tmp3540 = or i1 %tmp3528, %tmp3536 ; <i1> [#uses=1]
- br i1 %tmp3540, label %cond_true3543, label %cond_next3545
-
-cond_true3543: ; preds = %invcont3520
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 241 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind3393
-
-cond_next3545: ; preds = %invcont3520
- %tmp3552 = icmp eq i32 %tmp3398, %tmp3521 ; <i1> [#uses=1]
- br i1 %tmp3552, label %cleanup3565, label %cond_true3555
-
-cond_true3555: ; preds = %cond_next3545
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([30 x i8]* @.str24 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.30.904 to i32) to i64), i64 32)) )
- to label %cleanup3565 unwind label %unwind3393
-
-cleanup3565: ; preds = %cond_true3555, %cond_next3545
- call void @llvm.stackrestore( i8* %tmp3392 )
- %tmp36006095 = icmp ult i8 %tmp137138, %sat.45934.0 ; <i1> [#uses=1]
- br i1 %tmp36006095, label %cond_next3624, label %cond_true3603
-
-eh_then3574: ; preds = %unwind3393
- invoke void @__gnat_begin_handler( i8* %eh_ptr3394 )
- to label %invcont3580 unwind label %unwind3578
-
-unwind3578: ; preds = %invcont3582, %invcont3580, %eh_then3574
- %eh_ptr3579 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_ptr3394 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr3579 ) ; <i32>:16 [#uses=0]
- unreachable
-
-invcont3580: ; preds = %eh_then3574
- %tmp3581 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp3581( )
- to label %invcont3582 unwind label %unwind3578
-
-invcont3582: ; preds = %invcont3580
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([18 x i8]* @.str25 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.124.1606 to i32) to i64), i64 32)) )
- to label %cleanup3591 unwind label %unwind3578
-
-cleanup3591: ; preds = %invcont3582
- call void @__gnat_end_handler( i8* %eh_ptr3394 )
- %tmp3600 = icmp ult i8 %tmp137138, %sat.45934.0 ; <i1> [#uses=1]
- br i1 %tmp3600, label %cond_next3624, label %cond_true3603
-
-cond_true3603: ; preds = %cleanup3591, %cleanup3565
- %tmp3606 = icmp ult i8 %sat.45934.0, %tmp204205 ; <i1> [#uses=1]
- %tmp3610 = icmp ugt i8 %tmp137138, %tmp272273 ; <i1> [#uses=1]
- %tmp3614 = or i1 %tmp3606, %tmp3610 ; <i1> [#uses=1]
- br i1 %tmp3614, label %cond_true3617, label %cond_next3624
-
-cond_true3617: ; preds = %cond_true3603
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 250 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind3618
-
-unwind3618: ; preds = %bb3743, %cond_true3729, %bb3689, %cond_true3675, %bb3635, %cond_true3617
- %wed.3 = phi i8 [ %tmp238239, %cond_true3617 ], [ %wed.1, %bb3743 ], [ %tmp238239, %bb3689 ], [ %tmp238239, %bb3635 ], [ %tmp238239, %cond_true3675 ], [ %tmp238239, %cond_true3729 ] ; <i8> [#uses=1]
- %tue.3 = phi i8 [ %tmp204205, %cond_true3617 ], [ %tue.2, %bb3743 ], [ %tue.2, %bb3689 ], [ %tue.1, %bb3635 ], [ %tue.2, %cond_true3675 ], [ %tue.2, %cond_true3729 ] ; <i8> [#uses=1]
- %mon.3 = phi i8 [ %tmp170171, %cond_true3617 ], [ %mon.2, %bb3743 ], [ %mon.1, %bb3689 ], [ %tmp170171, %bb3635 ], [ %tmp170171, %cond_true3675 ], [ %mon.2, %cond_true3729 ] ; <i8> [#uses=1]
- %eh_ptr3619 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
- %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 ) ; <i32> [#uses=1]
- %eh_typeid3854 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp3856 = icmp eq i32 %eh_select3621, %eh_typeid3854 ; <i1> [#uses=1]
- br i1 %tmp3856, label %eh_then3857, label %Unwind
-
-cond_next3624: ; preds = %cond_true3603, %cleanup3591, %cleanup3565
- %tmp3629 = icmp ugt i8 %sat.45934.0, %tmp137138 ; <i1> [#uses=1]
- br i1 %tmp3629, label %cond_next3653, label %bb3635
-
-bb3635: ; preds = %cond_next3649, %cond_next3624
- %indvar6258 = phi i8 [ %indvar.next16, %cond_next3649 ], [ 0, %cond_next3624 ] ; <i8> [#uses=2]
- %tue.1 = phi i8 [ %tue.0, %cond_next3649 ], [ %tmp204205, %cond_next3624 ] ; <i8> [#uses=2]
- %tmp3637 = invoke i8 @report__equal( i32 2, i32 2 )
- to label %invcont3636 unwind label %unwind3618 ; <i8> [#uses=1]
-
-invcont3636: ; preds = %bb3635
- %i3633.4 = add i8 %indvar6258, %sat.45934.0 ; <i8> [#uses=1]
- %tmp3638 = icmp eq i8 %tmp3637, 0 ; <i1> [#uses=1]
- %tue.0 = select i1 %tmp3638, i8 %tue.1, i8 2 ; <i8> [#uses=2]
- %tmp3645 = icmp eq i8 %i3633.4, %tmp137138 ; <i1> [#uses=1]
- br i1 %tmp3645, label %cond_next3653, label %cond_next3649
-
-cond_next3649: ; preds = %invcont3636
- %indvar.next16 = add i8 %indvar6258, 1 ; <i8> [#uses=1]
- br label %bb3635
-
-cond_next3653: ; preds = %invcont3636, %cond_next3624
- %tue.2 = phi i8 [ %tmp204205, %cond_next3624 ], [ %tue.0, %invcont3636 ] ; <i8> [#uses=6]
- %tmp3658 = icmp ult i8 %tmp238239, %tmp306307 ; <i1> [#uses=1]
- br i1 %tmp3658, label %cond_next3678, label %cond_true3661
-
-cond_true3661: ; preds = %cond_next3653
- %tmp3664 = icmp ult i8 %tmp306307, %tmp204205 ; <i1> [#uses=1]
- %tmp3668 = icmp ugt i8 %tmp238239, %tmp272273 ; <i1> [#uses=1]
- %tmp3672 = or i1 %tmp3664, %tmp3668 ; <i1> [#uses=1]
- br i1 %tmp3672, label %cond_true3675, label %cond_next3678
-
-cond_true3675: ; preds = %cond_true3661
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 257 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind3618
-
-cond_next3678: ; preds = %cond_true3661, %cond_next3653
- %tmp3683 = icmp ugt i8 %tmp306307, %tmp238239 ; <i1> [#uses=1]
- br i1 %tmp3683, label %cond_next3707, label %bb3689
-
-bb3689: ; preds = %cond_next3703, %cond_next3678
- %indvar6261 = phi i8 [ %indvar.next18, %cond_next3703 ], [ 0, %cond_next3678 ] ; <i8> [#uses=2]
- %mon.1 = phi i8 [ %mon.0, %cond_next3703 ], [ %tmp170171, %cond_next3678 ] ; <i8> [#uses=2]
- %tmp3691 = invoke i8 @report__equal( i32 2, i32 2 )
- to label %invcont3690 unwind label %unwind3618 ; <i8> [#uses=1]
-
-invcont3690: ; preds = %bb3689
- %i3687.4 = add i8 %indvar6261, %tmp306307 ; <i8> [#uses=1]
- %tmp3692 = icmp eq i8 %tmp3691, 0 ; <i1> [#uses=1]
- %mon.0 = select i1 %tmp3692, i8 %mon.1, i8 1 ; <i8> [#uses=2]
- %tmp3699 = icmp eq i8 %i3687.4, %tmp238239 ; <i1> [#uses=1]
- br i1 %tmp3699, label %cond_next3707, label %cond_next3703
-
-cond_next3703: ; preds = %invcont3690
- %indvar.next18 = add i8 %indvar6261, 1 ; <i8> [#uses=1]
- br label %bb3689
-
-cond_next3707: ; preds = %invcont3690, %cond_next3678
- %mon.2 = phi i8 [ %tmp170171, %cond_next3678 ], [ %mon.0, %invcont3690 ] ; <i8> [#uses=8]
- %tmp3712 = icmp ult i8 %tmp137138, %mon.2 ; <i1> [#uses=1]
- br i1 %tmp3712, label %cond_next3732, label %cond_true3715
-
-cond_true3715: ; preds = %cond_next3707
- %tmp3718 = icmp ult i8 %mon.2, %tmp204205 ; <i1> [#uses=1]
- %tmp3722 = icmp ugt i8 %tmp137138, %tmp272273 ; <i1> [#uses=1]
- %tmp3726 = or i1 %tmp3718, %tmp3722 ; <i1> [#uses=1]
- br i1 %tmp3726, label %cond_true3729, label %cond_next3732
-
-cond_true3729: ; preds = %cond_true3715
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 264 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind3618
-
-cond_next3732: ; preds = %cond_true3715, %cond_next3707
- %tmp3737 = icmp ugt i8 %mon.2, %tmp137138 ; <i1> [#uses=1]
- br i1 %tmp3737, label %finally3852, label %bb3743
-
-bb3743: ; preds = %cond_next3757, %cond_next3732
- %indvar6265 = phi i8 [ %indvar.next20, %cond_next3757 ], [ 0, %cond_next3732 ] ; <i8> [#uses=2]
- %wed.1 = phi i8 [ %wed.0, %cond_next3757 ], [ %tmp238239, %cond_next3732 ] ; <i8> [#uses=2]
- %tmp3745 = invoke i8 @report__equal( i32 3, i32 3 )
- to label %invcont3744 unwind label %unwind3618 ; <i8> [#uses=1]
-
-invcont3744: ; preds = %bb3743
- %i3741.4 = add i8 %indvar6265, %mon.2 ; <i8> [#uses=1]
- %tmp3746 = icmp eq i8 %tmp3745, 0 ; <i1> [#uses=1]
- %wed.0 = select i1 %tmp3746, i8 %wed.1, i8 3 ; <i8> [#uses=2]
- %tmp3753 = icmp eq i8 %i3741.4, %tmp137138 ; <i1> [#uses=1]
- br i1 %tmp3753, label %finally3852, label %cond_next3757
-
-cond_next3757: ; preds = %invcont3744
- %indvar.next20 = add i8 %indvar6265, 1 ; <i8> [#uses=1]
- br label %bb3743
-
-eh_then3857: ; preds = %unwind3618
- invoke void @__gnat_begin_handler( i8* %eh_ptr3619 )
- to label %invcont3863 unwind label %unwind3861
-
-unwind3861: ; preds = %invcont3865, %invcont3863, %eh_then3857
- %eh_ptr3862 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_ptr3619 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr3862 ) ; <i32>:17 [#uses=0]
- unreachable
-
-invcont3863: ; preds = %eh_then3857
- %tmp3864 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp3864( )
- to label %invcont3865 unwind label %unwind3861
-
-invcont3865: ; preds = %invcont3863
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([18 x i8]* @.str26 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.124.1606 to i32) to i64), i64 32)) )
- to label %cleanup3874 unwind label %unwind3861
-
-cleanup3874: ; preds = %invcont3865
- call void @__gnat_end_handler( i8* %eh_ptr3619 )
- br label %finally3852
-
-finally3852: ; preds = %cleanup3874, %invcont3744, %cond_next3732
- %wed.4 = phi i8 [ %wed.3, %cleanup3874 ], [ %tmp238239, %cond_next3732 ], [ %wed.0, %invcont3744 ] ; <i8> [#uses=4]
- %tue.4 = phi i8 [ %tue.3, %cleanup3874 ], [ %tue.2, %cond_next3732 ], [ %tue.2, %invcont3744 ] ; <i8> [#uses=13]
- %mon.4 = phi i8 [ %mon.3, %cleanup3874 ], [ %mon.2, %cond_next3732 ], [ %mon.2, %invcont3744 ] ; <i8> [#uses=18]
- %tmp3885 = invoke i32 @report__ident_int( i32 -5 )
- to label %invcont3884 unwind label %unwind3880 ; <i32> [#uses=4]
-
-unwind3880: ; preds = %cond_true4138, %invcont4122, %cond_next4120, %cond_true4117, %cond_true4027, %cond_next3938, %cond_true3935, %cond_true3907, %finally3852
- %eh_ptr3881 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
- %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 ) ; <i32> [#uses=1]
- %eh_typeid4149 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp4151 = icmp eq i32 %eh_select3883, %eh_typeid4149 ; <i1> [#uses=1]
- br i1 %tmp4151, label %eh_then4152, label %Unwind
-
-invcont3884: ; preds = %finally3852
- %tmp3892 = icmp slt i32 %tmp3885, %tmp384 ; <i1> [#uses=2]
- %tmp3900 = icmp sgt i32 %tmp3885, %tmp394 ; <i1> [#uses=1]
- %tmp3904 = or i1 %tmp3892, %tmp3900 ; <i1> [#uses=1]
- br i1 %tmp3904, label %cond_true3907, label %cond_next3909
-
-cond_true3907: ; preds = %invcont3884
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 312 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind3880
-
-cond_next3909: ; preds = %invcont3884
- %tmp3913 = icmp slt i32 %tmp3885, -5 ; <i1> [#uses=1]
- br i1 %tmp3913, label %cond_true3916, label %cond_next3938
-
-cond_true3916: ; preds = %cond_next3909
- %tmp3928 = icmp slt i32 %tmp394, -6 ; <i1> [#uses=1]
- %tmp3932 = or i1 %tmp3892, %tmp3928 ; <i1> [#uses=1]
- br i1 %tmp3932, label %cond_true3935, label %cond_next3938
-
-cond_true3935: ; preds = %cond_true3916
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 312 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind3880
-
-cond_next3938: ; preds = %cond_true3916, %cond_next3909
- %tmp4005 = invoke i32 @report__ident_int( i32 -5 )
- to label %invcont4004 unwind label %unwind3880 ; <i32> [#uses=6]
-
-invcont4004: ; preds = %cond_next3938
- %tmp4012 = icmp slt i32 %tmp4005, %tmp384 ; <i1> [#uses=2]
- %tmp4020 = icmp sgt i32 %tmp4005, %tmp394 ; <i1> [#uses=1]
- %tmp4024 = or i1 %tmp4012, %tmp4020 ; <i1> [#uses=1]
- br i1 %tmp4024, label %cond_true4027, label %cond_next4029
-
-cond_true4027: ; preds = %invcont4004
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 313 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind3880
-
-cond_next4029: ; preds = %invcont4004
- %tmp4071 = icmp sgt i32 %tmp4005, -6 ; <i1> [#uses=1]
- %tmp4078 = add i32 %tmp4005, 1073741823 ; <i32> [#uses=1]
- %iftmp.132.0 = select i1 %tmp4071, i32 %tmp4078, i32 1073741818 ; <i32> [#uses=1]
- %tmp4085 = sub i32 %iftmp.132.0, %tmp4005 ; <i32> [#uses=1]
- %tmp4086 = shl i32 %tmp4085, 2 ; <i32> [#uses=2]
- %tmp4087 = add i32 %tmp4086, 4 ; <i32> [#uses=1]
- %tmp4088 = icmp sgt i32 %tmp4087, -1 ; <i1> [#uses=1]
- %tmp4087.op = add i32 %tmp4086, 7 ; <i32> [#uses=1]
- %tmp4087.op.op = and i32 %tmp4087.op, -4 ; <i32> [#uses=1]
- %tmp4091 = select i1 %tmp4088, i32 %tmp4087.op.op, i32 0 ; <i32> [#uses=1]
- %tmp4095 = icmp slt i32 %tmp4005, -5 ; <i1> [#uses=1]
- br i1 %tmp4095, label %cond_true4098, label %cond_next4120
-
-cond_true4098: ; preds = %cond_next4029
- %tmp4110 = icmp slt i32 %tmp394, -6 ; <i1> [#uses=1]
- %tmp4114 = or i1 %tmp4012, %tmp4110 ; <i1> [#uses=1]
- br i1 %tmp4114, label %cond_true4117, label %cond_next4120
-
-cond_true4117: ; preds = %cond_true4098
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 313 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind3880
-
-cond_next4120: ; preds = %cond_true4098, %cond_next4029
- %tmp4123 = invoke i8* @__gnat_malloc( i32 %tmp4091 )
- to label %invcont4122 unwind label %unwind3880 ; <i8*> [#uses=0]
-
-invcont4122: ; preds = %cond_next4120
- %tmp41254128 = sext i32 %tmp3885 to i64 ; <i64> [#uses=1]
- %tmp4129 = sub i64 -5, %tmp41254128 ; <i64> [#uses=2]
- %tmp4134 = invoke i32 @report__ident_int( i32 0 )
- to label %invcont4133 unwind label %unwind3880 ; <i32> [#uses=1]
-
-invcont4133: ; preds = %invcont4122
- %tmp4130 = icmp sgt i64 %tmp4129, -1 ; <i1> [#uses=1]
- %tmp4129.cast = trunc i64 %tmp4129 to i32 ; <i32> [#uses=1]
- %max41314132 = select i1 %tmp4130, i32 %tmp4129.cast, i32 0 ; <i32> [#uses=1]
- %tmp4135 = icmp eq i32 %max41314132, %tmp4134 ; <i1> [#uses=1]
- br i1 %tmp4135, label %finally4147, label %cond_true4138
-
-cond_true4138: ; preds = %invcont4133
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([31 x i8]* @.str27 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.98.1466 to i32) to i64), i64 32)) )
- to label %finally4147 unwind label %unwind3880
-
-eh_then4152: ; preds = %unwind3880
- invoke void @__gnat_begin_handler( i8* %eh_ptr3881 )
- to label %invcont4158 unwind label %unwind4156
-
-unwind4156: ; preds = %invcont4160, %invcont4158, %eh_then4152
- %eh_ptr4157 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_ptr3881 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr4157 ) ; <i32>:18 [#uses=0]
- unreachable
-
-invcont4158: ; preds = %eh_then4152
- %tmp4159 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp4159( )
- to label %invcont4160 unwind label %unwind4156
-
-invcont4160: ; preds = %invcont4158
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([18 x i8]* @.str28 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.124.1606 to i32) to i64), i64 32)) )
- to label %cleanup4169 unwind label %unwind4156
-
-cleanup4169: ; preds = %invcont4160
- call void @__gnat_end_handler( i8* %eh_ptr3881 )
- br label %finally4147
-
-finally4147: ; preds = %cleanup4169, %cond_true4138, %invcont4133
- %tmp4174 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=3]
- %tmp4180 = invoke i32 @report__ident_int( i32 4 )
- to label %invcont4179 unwind label %unwind4175 ; <i32> [#uses=6]
-
-unwind4175: ; preds = %cond_true4292, %cond_true4187, %finally4147
- %eh_ptr4176 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
- %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 ) ; <i32> [#uses=1]
- %eh_typeid4304 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp4306 = icmp eq i32 %eh_select4178, %eh_typeid4304 ; <i1> [#uses=1]
- br i1 %tmp4306, label %eh_then4307, label %cleanup4334
-
-invcont4179: ; preds = %finally4147
- %tmp4184 = icmp slt i32 %tmp4180, 1 ; <i1> [#uses=1]
- br i1 %tmp4184, label %cond_true4187, label %cond_next4189
-
-cond_true4187: ; preds = %invcont4179
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 329 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind4175
-
-cond_next4189: ; preds = %invcont4179
- %tmp4231 = icmp sgt i32 %tmp4180, 2 ; <i1> [#uses=2]
- %tmp4238 = add i32 %tmp4180, 1073741823 ; <i32> [#uses=1]
- %iftmp.138.0 = select i1 %tmp4231, i32 %tmp4238, i32 2 ; <i32> [#uses=1]
- %tmp4245 = sub i32 %iftmp.138.0, %tmp4180 ; <i32> [#uses=1]
- %tmp4246 = shl i32 %tmp4245, 2 ; <i32> [#uses=2]
- %tmp4247 = add i32 %tmp4246, 4 ; <i32> [#uses=1]
- %tmp4248 = icmp sgt i32 %tmp4247, -1 ; <i1> [#uses=1]
- %tmp4247.op = add i32 %tmp4246, 7 ; <i32> [#uses=1]
- %tmp4247.op.op = and i32 %tmp4247.op, -4 ; <i32> [#uses=1]
- %tmp4251 = select i1 %tmp4248, i32 %tmp4247.op.op, i32 0 ; <i32> [#uses=1]
- %tmp4253 = alloca i8, i32 %tmp4251 ; <i8*> [#uses=2]
- %tmp42534254 = bitcast i8* %tmp4253 to i32* ; <i32*> [#uses=1]
- br i1 %tmp4231, label %bb4276, label %cond_next4266.preheader
-
-cond_next4266.preheader: ; preds = %cond_next4189
- %J152b.36147.3 = add i32 %tmp4180, 1 ; <i32> [#uses=1]
- br label %cond_next4266
-
-cond_next4266: ; preds = %cond_next4266, %cond_next4266.preheader
- %indvar6268 = phi i32 [ 0, %cond_next4266.preheader ], [ %indvar.next22, %cond_next4266 ] ; <i32> [#uses=3]
- %tmp4273 = getelementptr i32* %tmp42534254, i32 %indvar6268 ; <i32*> [#uses=1]
- store i32 5, i32* %tmp4273
- %tmp4275 = add i32 %J152b.36147.3, %indvar6268 ; <i32> [#uses=1]
- %tmp42626151 = icmp sgt i32 %tmp4275, 2 ; <i1> [#uses=1]
- %indvar.next22 = add i32 %indvar6268, 1 ; <i32> [#uses=1]
- br i1 %tmp42626151, label %bb4276, label %cond_next4266
-
-bb4276: ; preds = %cond_next4266, %cond_next4189
- %tmp4280 = sub i32 2, %tmp4180 ; <i32> [#uses=1]
- %tmp4281 = icmp eq i32 %tmp4280, 1 ; <i1> [#uses=1]
- br i1 %tmp4281, label %cond_true4284, label %cleanup4336
-
-cond_true4284: ; preds = %bb4276
- %tmp4288 = call i32 (i8*, i8*, i32, ...)* @memcmp( i8* %tmp4253, i8* bitcast ([2 x i32]* @C.143.1720 to i8*), i32 8 ) ; <i32> [#uses=1]
- %tmp4289 = icmp eq i32 %tmp4288, 0 ; <i1> [#uses=1]
- br i1 %tmp4289, label %cond_true4292, label %cleanup4336
-
-cond_true4292: ; preds = %cond_true4284
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([37 x i8]* @.str29 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.146.1725 to i32) to i64), i64 32)) )
- to label %cleanup4336 unwind label %unwind4175
-
-eh_then4307: ; preds = %unwind4175
- invoke void @__gnat_begin_handler( i8* %eh_ptr4176 )
- to label %invcont4313 unwind label %unwind4311
-
-unwind4311: ; preds = %invcont4315, %invcont4313, %eh_then4307
- %eh_ptr4312 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- invoke void @__gnat_end_handler( i8* %eh_ptr4176 )
- to label %cleanup4334 unwind label %unwind4326
-
-invcont4313: ; preds = %eh_then4307
- %tmp4314 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp4314( )
- to label %invcont4315 unwind label %unwind4311
-
-invcont4315: ; preds = %invcont4313
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([18 x i8]* @.str30 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.124.1606 to i32) to i64), i64 32)) )
- to label %cleanup4324 unwind label %unwind4311
-
-cleanup4324: ; preds = %invcont4315
- invoke void @__gnat_end_handler( i8* %eh_ptr4176 )
- to label %cleanup4336 unwind label %unwind4326
-
-unwind4326: ; preds = %cleanup4324, %unwind4311
- %eh_ptr4327 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @llvm.stackrestore( i8* %tmp4174 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr4327 ) ; <i32>:19 [#uses=0]
- unreachable
-
-cleanup4334: ; preds = %unwind4311, %unwind4175
- %eh_exception.50 = phi i8* [ %eh_ptr4176, %unwind4175 ], [ %eh_ptr4312, %unwind4311 ] ; <i8*> [#uses=1]
- call void @llvm.stackrestore( i8* %tmp4174 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_exception.50 ) ; <i32>:20 [#uses=0]
- unreachable
-
-cleanup4336: ; preds = %cleanup4324, %cond_true4292, %cond_true4284, %bb4276
- call void @llvm.stackrestore( i8* %tmp4174 )
- %tmp4338 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=6]
- %tmp4379 = alloca i8, i32 %max1395 ; <i8*> [#uses=9]
- %tmp4421 = alloca i8, i32 %max1395 ; <i8*> [#uses=3]
- %tmp4428 = icmp ugt i8 %tmp204205, %tmp272273 ; <i1> [#uses=1]
- br i1 %tmp4428, label %cond_next4458, label %bb4433
-
-bb4433: ; preds = %cleanup4336
- store i8 %wed.4, i8* %tmp4421
- %tmp4442 = icmp eq i8 %tmp272273, %tmp204205 ; <i1> [#uses=1]
- br i1 %tmp4442, label %cond_next4458, label %cond_next4446.preheader
-
-cond_next4446.preheader: ; preds = %bb4433
- %J161b.26152.2 = add i8 %tmp204205, 1 ; <i8> [#uses=1]
- br label %cond_next4446
-
-cond_next4446: ; preds = %cond_next4446, %cond_next4446.preheader
- %indvar6271 = phi i8 [ 0, %cond_next4446.preheader ], [ %indvar.next24, %cond_next4446 ] ; <i8> [#uses=2]
- %tmp4448 = add i8 %J161b.26152.2, %indvar6271 ; <i8> [#uses=2]
- %tmp443444356156 = zext i8 %tmp4448 to i32 ; <i32> [#uses=1]
- %tmp44376157 = sub i32 %tmp443444356156, %tmp13571358 ; <i32> [#uses=1]
- %tmp44386158 = getelementptr i8* %tmp4421, i32 %tmp44376157 ; <i8*> [#uses=1]
- store i8 %wed.4, i8* %tmp44386158
- %tmp44426160 = icmp eq i8 %tmp272273, %tmp4448 ; <i1> [#uses=1]
- %indvar.next24 = add i8 %indvar6271, 1 ; <i8> [#uses=1]
- br i1 %tmp44426160, label %cond_next4458, label %cond_next4446
-
-unwind4453: ; preds = %cond_true4609, %cond_true4504, %cond_true4481
- %eh_ptr4454 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=4]
- %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 ) ; <i32> [#uses=1]
- %eh_typeid4710 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp4712 = icmp eq i32 %eh_select4456, %eh_typeid4710 ; <i1> [#uses=1]
- br i1 %tmp4712, label %eh_then4713, label %cleanup4740
-
-cond_next4458: ; preds = %cond_next4446, %bb4433, %cleanup4336
- call void @llvm.memcpy.i32( i8* %tmp4379, i8* %tmp4421, i32 %max1395, i32 1 )
- %tmp4464 = icmp ult i8 %tmp137138, %mon.4 ; <i1> [#uses=2]
- br i1 %tmp4464, label %cond_next4484, label %cond_true4467
-
-cond_true4467: ; preds = %cond_next4458
- %tmp4470 = icmp ult i8 %mon.4, %tmp204205 ; <i1> [#uses=1]
- %tmp4474 = icmp ugt i8 %tmp137138, %tmp272273 ; <i1> [#uses=1]
- %tmp4478 = or i1 %tmp4470, %tmp4474 ; <i1> [#uses=1]
- br i1 %tmp4478, label %cond_true4481, label %cond_next4484
-
-cond_true4481: ; preds = %cond_true4467
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 340 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind4453
-
-cond_next4484: ; preds = %cond_true4467, %cond_next4458
- %tmp4487 = icmp ult i8 %mon.4, %tue.4 ; <i1> [#uses=2]
- br i1 %tmp4487, label %cond_next4507, label %cond_true4490
-
-cond_true4490: ; preds = %cond_next4484
- %tmp4493 = icmp ult i8 %tue.4, %tmp204205 ; <i1> [#uses=1]
- %tmp4497 = icmp ugt i8 %mon.4, %tmp272273 ; <i1> [#uses=1]
- %tmp4501 = or i1 %tmp4497, %tmp4493 ; <i1> [#uses=1]
- br i1 %tmp4501, label %cond_true4504, label %cond_next4507
-
-cond_true4504: ; preds = %cond_true4490
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 340 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind4453
-
-cond_next4507: ; preds = %cond_true4490, %cond_next4484
- %tmp45904591 = zext i8 %mon.4 to i64 ; <i64> [#uses=3]
- %tmp45924593 = zext i8 %tue.4 to i64 ; <i64> [#uses=1]
- %tmp4594 = sub i64 %tmp45904591, %tmp45924593 ; <i64> [#uses=1]
- %tmp4595 = add i64 %tmp4594, 1 ; <i64> [#uses=2]
- %tmp4596 = icmp sgt i64 %tmp4595, -1 ; <i1> [#uses=1]
- %max4597 = select i1 %tmp4596, i64 %tmp4595, i64 0 ; <i64> [#uses=1]
- %tmp45984599 = zext i8 %tmp137138 to i64 ; <i64> [#uses=1]
- %tmp4602 = sub i64 %tmp45984599, %tmp45904591 ; <i64> [#uses=1]
- %tmp4603 = add i64 %tmp4602, 1 ; <i64> [#uses=3]
- %tmp4604 = icmp sgt i64 %tmp4603, -1 ; <i1> [#uses=2]
- %max4605 = select i1 %tmp4604, i64 %tmp4603, i64 0 ; <i64> [#uses=1]
- %tmp4606 = icmp eq i64 %max4597, %max4605 ; <i1> [#uses=1]
- br i1 %tmp4606, label %cond_next4611, label %cond_true4609
-
-cond_true4609: ; preds = %cond_next4507
- invoke void @__gnat_rcheck_07( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 340 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind4453
-
-cond_next4611: ; preds = %cond_next4507
- %tmp46124613 = zext i8 %tue.4 to i32 ; <i32> [#uses=1]
- %tmp4616 = sub i32 %tmp46124613, %tmp13571358 ; <i32> [#uses=2]
- %tmp46244625 = zext i8 %mon.4 to i32 ; <i32> [#uses=1]
- %tmp4628 = sub i32 %tmp46244625, %tmp13571358 ; <i32> [#uses=3]
- %tmp4636 = icmp slt i32 %tmp4628, %tmp4616 ; <i1> [#uses=1]
- %tmp4677 = icmp ugt i8 %tue.4, %mon.4 ; <i1> [#uses=2]
- br i1 %tmp4636, label %cond_false4673, label %cond_true4639
-
-cond_true4639: ; preds = %cond_next4611
- br i1 %tmp4677, label %cleanup4742, label %bb4648.preheader
-
-bb4648.preheader: ; preds = %cond_true4639
- %tmp46556217 = getelementptr i8* %tmp4379, i32 %tmp4628 ; <i8*> [#uses=1]
- %tmp46566218 = load i8* %tmp46556217 ; <i8> [#uses=1]
- %tmp46596220 = getelementptr i8* %tmp4379, i32 %tmp4616 ; <i8*> [#uses=1]
- store i8 %tmp46566218, i8* %tmp46596220
- %tmp46646223 = icmp eq i8 %tue.4, %mon.4 ; <i1> [#uses=1]
- br i1 %tmp46646223, label %cleanup4742, label %cond_next4668.preheader
-
-cond_next4668.preheader: ; preds = %bb4648.preheader
- %tmp46616222.in = add i8 %mon.4, 1 ; <i8> [#uses=1]
- %L174b.26213 = add i8 %tue.4, 1 ; <i8> [#uses=1]
- %tmp.27 = sub i8 %mon.4, %tue.4 ; <i8> [#uses=1]
- br label %cond_next4668
-
-cond_next4668: ; preds = %cond_next4668, %cond_next4668.preheader
- %indvar6275 = phi i8 [ 0, %cond_next4668.preheader ], [ %indvar.next26, %cond_next4668 ] ; <i8> [#uses=3]
- %tmp46616222 = add i8 %tmp46616222.in, %indvar6275 ; <i8> [#uses=1]
- %tmp4670 = add i8 %L174b.26213, %indvar6275 ; <i8> [#uses=1]
- %tmp46494650 = zext i8 %tmp4670 to i32 ; <i32> [#uses=1]
- %tmp46514652 = zext i8 %tmp46616222 to i32 ; <i32> [#uses=1]
- %tmp4654 = sub i32 %tmp46514652, %tmp13571358 ; <i32> [#uses=1]
- %tmp4655 = getelementptr i8* %tmp4379, i32 %tmp4654 ; <i8*> [#uses=1]
- %tmp4656 = load i8* %tmp4655 ; <i8> [#uses=1]
- %tmp4658 = sub i32 %tmp46494650, %tmp13571358 ; <i32> [#uses=1]
- %tmp4659 = getelementptr i8* %tmp4379, i32 %tmp4658 ; <i8*> [#uses=1]
- store i8 %tmp4656, i8* %tmp4659
- %indvar.next26 = add i8 %indvar6275, 1 ; <i8> [#uses=2]
- %exitcond28 = icmp eq i8 %indvar.next26, %tmp.27 ; <i1> [#uses=1]
- br i1 %exitcond28, label %cleanup4742, label %cond_next4668
-
-cond_false4673: ; preds = %cond_next4611
- br i1 %tmp4677, label %cleanup4742, label %bb4682.preheader
-
-bb4682.preheader: ; preds = %cond_false4673
- %tmp468546866228 = and i32 %tmp123, 255 ; <i32> [#uses=1]
- %tmp46886229 = sub i32 %tmp468546866228, %tmp13571358 ; <i32> [#uses=1]
- %tmp46896230 = getelementptr i8* %tmp4379, i32 %tmp46886229 ; <i8*> [#uses=1]
- %tmp46906231 = load i8* %tmp46896230 ; <i8> [#uses=1]
- %tmp46936233 = getelementptr i8* %tmp4379, i32 %tmp4628 ; <i8*> [#uses=1]
- store i8 %tmp46906231, i8* %tmp46936233
- %tmp46986236 = icmp eq i8 %mon.4, %tue.4 ; <i1> [#uses=1]
- br i1 %tmp46986236, label %cleanup4742, label %cond_next4702.preheader
-
-cond_next4702.preheader: ; preds = %bb4682.preheader
- %tmp46956235.in = add i8 %tmp137138, -1 ; <i8> [#uses=1]
- %L172b.26226 = add i8 %mon.4, -1 ; <i8> [#uses=1]
- %tmp.32 = sub i8 %mon.4, %tue.4 ; <i8> [#uses=1]
- br label %cond_next4702
-
-cond_next4702: ; preds = %cond_next4702, %cond_next4702.preheader
- %indvar6278 = phi i8 [ 0, %cond_next4702.preheader ], [ %indvar.next30, %cond_next4702 ] ; <i8> [#uses=3]
- %tmp46956235 = sub i8 %tmp46956235.in, %indvar6278 ; <i8> [#uses=1]
- %tmp4704 = sub i8 %L172b.26226, %indvar6278 ; <i8> [#uses=1]
- %tmp46834684 = zext i8 %tmp4704 to i32 ; <i32> [#uses=1]
- %tmp46854686 = zext i8 %tmp46956235 to i32 ; <i32> [#uses=1]
- %tmp4688 = sub i32 %tmp46854686, %tmp13571358 ; <i32> [#uses=1]
- %tmp4689 = getelementptr i8* %tmp4379, i32 %tmp4688 ; <i8*> [#uses=1]
- %tmp4690 = load i8* %tmp4689 ; <i8> [#uses=1]
- %tmp4692 = sub i32 %tmp46834684, %tmp13571358 ; <i32> [#uses=1]
- %tmp4693 = getelementptr i8* %tmp4379, i32 %tmp4692 ; <i8*> [#uses=1]
- store i8 %tmp4690, i8* %tmp4693
- %indvar.next30 = add i8 %indvar6278, 1 ; <i8> [#uses=2]
- %exitcond33 = icmp eq i8 %indvar.next30, %tmp.32 ; <i1> [#uses=1]
- br i1 %exitcond33, label %cleanup4742, label %cond_next4702
-
-eh_then4713: ; preds = %unwind4453
- invoke void @__gnat_begin_handler( i8* %eh_ptr4454 )
- to label %invcont4719 unwind label %unwind4717
-
-unwind4717: ; preds = %invcont4719, %eh_then4713
- %eh_ptr4718 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- invoke void @__gnat_end_handler( i8* %eh_ptr4454 )
- to label %cleanup4740 unwind label %unwind4732
-
-invcont4719: ; preds = %eh_then4713
- %tmp4720 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp4720( )
- to label %UnifiedReturnBlock35 unwind label %unwind4717
-
-unwind4732: ; preds = %unwind4717
- %eh_ptr4733 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @llvm.stackrestore( i8* %tmp4338 )
- call void @llvm.stackrestore( i8* %tmp4338 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr4733 ) ; <i32>:21 [#uses=0]
- unreachable
-
-cleanup4740: ; preds = %unwind4717, %unwind4453
- %eh_exception.53 = phi i8* [ %eh_ptr4454, %unwind4453 ], [ %eh_ptr4718, %unwind4717 ] ; <i8*> [#uses=1]
- call void @llvm.stackrestore( i8* %tmp4338 )
- call void @llvm.stackrestore( i8* %tmp4338 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_exception.53 ) ; <i32>:22 [#uses=0]
- unreachable
-
-cleanup4742: ; preds = %cond_next4702, %bb4682.preheader, %cond_false4673, %cond_next4668, %bb4648.preheader, %cond_true4639
- call void @llvm.stackrestore( i8* %tmp4338 )
- call void @llvm.stackrestore( i8* %tmp4338 )
- %tmp4749 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=2]
- br i1 %tmp4464, label %cond_next4776, label %UnifiedReturnBlock35
-
-unwind4770: ; preds = %cond_next4776
- %eh_ptr4771 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
- %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 ) ; <i32> [#uses=1]
- call void @llvm.stackrestore( i8* %tmp4749 )
- %eh_typeid4874 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp4876 = icmp eq i32 %eh_select4773, %eh_typeid4874 ; <i1> [#uses=1]
- br i1 %tmp4876, label %eh_then4877, label %Unwind
-
-cond_next4776: ; preds = %cleanup4742
- %tmp4856.cast = trunc i64 %tmp4603 to i32 ; <i32> [#uses=1]
- %max48584859 = select i1 %tmp4604, i32 %tmp4856.cast, i32 0 ; <i32> [#uses=1]
- %tmp4861 = invoke i8 @report__equal( i32 %max48584859, i32 0 )
- to label %invcont4860 unwind label %unwind4770 ; <i8> [#uses=1]
-
-invcont4860: ; preds = %cond_next4776
- %tmp4862 = icmp eq i8 %tmp4861, 0 ; <i1> [#uses=1]
- %tue.8 = select i1 %tmp4862, i8 %tue.4, i8 2 ; <i8> [#uses=3]
- call void @llvm.stackrestore( i8* %tmp4749 )
- %tmp49016170 = icmp ult i8 %mon.4, %tue.8 ; <i1> [#uses=1]
- br i1 %tmp49016170, label %cond_next4925, label %cond_true4904
-
-eh_then4877: ; preds = %unwind4770
- invoke void @__gnat_begin_handler( i8* %eh_ptr4771 )
- to label %invcont4883 unwind label %unwind4881
-
-unwind4881: ; preds = %invcont4885, %invcont4883, %eh_then4877
- %eh_ptr4882 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_ptr4771 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr4882 ) ; <i32>:23 [#uses=0]
- unreachable
-
-invcont4883: ; preds = %eh_then4877
- %tmp4884 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp4884( )
- to label %invcont4885 unwind label %unwind4881
-
-invcont4885: ; preds = %invcont4883
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([18 x i8]* @.str32 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.124.1606 to i32) to i64), i64 32)) )
- to label %cleanup4894 unwind label %unwind4881
-
-cleanup4894: ; preds = %invcont4885
- call void @__gnat_end_handler( i8* %eh_ptr4771 )
- br i1 %tmp4487, label %cond_next4925, label %cond_true4904
-
-cond_true4904: ; preds = %cleanup4894, %invcont4860
- %tue.96161.0 = phi i8 [ %tue.8, %invcont4860 ], [ %tue.4, %cleanup4894 ] ; <i8> [#uses=3]
- %tmp4907 = icmp ult i8 %tue.96161.0, %tmp204205 ; <i1> [#uses=1]
- %tmp4911 = icmp ugt i8 %mon.4, %tmp272273 ; <i1> [#uses=1]
- %tmp4915 = or i1 %tmp4907, %tmp4911 ; <i1> [#uses=1]
- br i1 %tmp4915, label %cond_true4918, label %cond_next4925
-
-cond_true4918: ; preds = %cond_true4904
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 361 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind4919
-
-unwind4919: ; preds = %cond_next4925, %cond_true4918
- %tue.96161.2 = phi i8 [ %tue.96161.0, %cond_true4918 ], [ %tue.96161.1, %cond_next4925 ] ; <i8> [#uses=1]
- %eh_ptr4920 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
- %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 ) ; <i32> [#uses=1]
- %eh_typeid4987 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp4989 = icmp eq i32 %eh_select4922, %eh_typeid4987 ; <i1> [#uses=1]
- br i1 %tmp4989, label %eh_then4990, label %Unwind
-
-cond_next4925: ; preds = %cond_true4904, %cleanup4894, %invcont4860
- %tue.96161.1 = phi i8 [ %tue.8, %invcont4860 ], [ %tue.4, %cleanup4894 ], [ %tue.96161.0, %cond_true4904 ] ; <i8> [#uses=6]
- %tmp49714972 = zext i8 %tue.96161.1 to i64 ; <i64> [#uses=1]
- %tmp4973 = sub i64 %tmp45904591, %tmp49714972 ; <i64> [#uses=1]
- %tmp4974 = add i64 %tmp4973, 1 ; <i64> [#uses=2]
- %tmp4975 = icmp sgt i64 %tmp4974, -1 ; <i1> [#uses=1]
- %tmp4974.cast = trunc i64 %tmp4974 to i32 ; <i32> [#uses=1]
- %max49764977 = select i1 %tmp4975, i32 %tmp4974.cast, i32 0 ; <i32> [#uses=1]
- %tmp4979 = invoke i8 @report__equal( i32 %max49764977, i32 0 )
- to label %invcont4978 unwind label %unwind4919 ; <i8> [#uses=1]
-
-invcont4978: ; preds = %cond_next4925
- %tmp4980 = icmp eq i8 %tmp4979, 0 ; <i1> [#uses=1]
- br i1 %tmp4980, label %finally4985, label %cond_true4983
-
-cond_true4983: ; preds = %invcont4978
- %tmp50146178 = icmp ugt i8 %tue.96161.1, 1 ; <i1> [#uses=1]
- br i1 %tmp50146178, label %cond_next5038, label %cond_true5017
-
-eh_then4990: ; preds = %unwind4919
- invoke void @__gnat_begin_handler( i8* %eh_ptr4920 )
- to label %invcont4996 unwind label %unwind4994
-
-unwind4994: ; preds = %invcont4998, %invcont4996, %eh_then4990
- %eh_ptr4995 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_ptr4920 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr4995 ) ; <i32>:24 [#uses=0]
- unreachable
-
-invcont4996: ; preds = %eh_then4990
- %tmp4997 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp4997( )
- to label %invcont4998 unwind label %unwind4994
-
-invcont4998: ; preds = %invcont4996
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([19 x i8]* @.str33 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.170.1990 to i32) to i64), i64 32)) )
- to label %cleanup5007 unwind label %unwind4994
-
-cleanup5007: ; preds = %invcont4998
- call void @__gnat_end_handler( i8* %eh_ptr4920 )
- br label %finally4985
-
-finally4985: ; preds = %cleanup5007, %invcont4978
- %tue.96161.3 = phi i8 [ %tue.96161.2, %cleanup5007 ], [ %tue.96161.1, %invcont4978 ] ; <i8> [#uses=3]
- %tmp5014 = icmp ult i8 %mon.4, %tue.96161.3 ; <i1> [#uses=1]
- br i1 %tmp5014, label %cond_next5038, label %cond_true5017
-
-cond_true5017: ; preds = %finally4985, %cond_true4983
- %tue.96161.4 = phi i8 [ %tue.96161.1, %cond_true4983 ], [ %tue.96161.3, %finally4985 ] ; <i8> [#uses=3]
- %mon.86171.0 = phi i8 [ 1, %cond_true4983 ], [ %mon.4, %finally4985 ] ; <i8> [#uses=3]
- %tmp5020 = icmp ult i8 %tue.96161.4, %tmp204205 ; <i1> [#uses=1]
- %tmp5024 = icmp ugt i8 %mon.86171.0, %tmp272273 ; <i1> [#uses=1]
- %tmp5028 = or i1 %tmp5024, %tmp5020 ; <i1> [#uses=1]
- br i1 %tmp5028, label %cond_true5031, label %cond_next5038
-
-cond_true5031: ; preds = %cond_true5017
- invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 375 )
- to label %UnifiedUnreachableBlock34 unwind label %unwind5032
-
-unwind5032: ; preds = %cond_next5038, %cond_true5031
- %tue.96161.6 = phi i8 [ %tue.96161.4, %cond_true5031 ], [ %tue.96161.5, %cond_next5038 ] ; <i8> [#uses=1]
- %mon.86171.2 = phi i8 [ %mon.86171.0, %cond_true5031 ], [ %mon.86171.1, %cond_next5038 ] ; <i8> [#uses=1]
- %eh_ptr5033 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
- %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 ) ; <i32> [#uses=1]
- %eh_typeid5100 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp5102 = icmp eq i32 %eh_select5035, %eh_typeid5100 ; <i1> [#uses=1]
- br i1 %tmp5102, label %eh_then5103, label %Unwind
-
-cond_next5038: ; preds = %cond_true5017, %finally4985, %cond_true4983
- %tue.96161.5 = phi i8 [ %tue.96161.1, %cond_true4983 ], [ %tue.96161.3, %finally4985 ], [ %tue.96161.4, %cond_true5017 ] ; <i8> [#uses=4]
- %mon.86171.1 = phi i8 [ 1, %cond_true4983 ], [ %mon.4, %finally4985 ], [ %mon.86171.0, %cond_true5017 ] ; <i8> [#uses=4]
- %tmp50825083 = zext i8 %mon.86171.1 to i64 ; <i64> [#uses=1]
- %tmp50845085 = zext i8 %tue.96161.5 to i64 ; <i64> [#uses=1]
- %tmp5086 = sub i64 %tmp50825083, %tmp50845085 ; <i64> [#uses=1]
- %tmp5087 = add i64 %tmp5086, 1 ; <i64> [#uses=2]
- %tmp5088 = icmp sgt i64 %tmp5087, -1 ; <i1> [#uses=1]
- %tmp5087.cast = trunc i64 %tmp5087 to i32 ; <i32> [#uses=1]
- %max50895090 = select i1 %tmp5088, i32 %tmp5087.cast, i32 0 ; <i32> [#uses=1]
- %tmp5092 = invoke i8 @report__equal( i32 %max50895090, i32 0 )
- to label %invcont5091 unwind label %unwind5032 ; <i8> [#uses=1]
-
-invcont5091: ; preds = %cond_next5038
- %tmp5093 = icmp eq i8 %tmp5092, 0 ; <i1> [#uses=1]
- br i1 %tmp5093, label %finally5098, label %cond_true5096
-
-cond_true5096: ; preds = %invcont5091
- br label %finally5098
-
-eh_then5103: ; preds = %unwind5032
- invoke void @__gnat_begin_handler( i8* %eh_ptr5033 )
- to label %invcont5109 unwind label %unwind5107
-
-unwind5107: ; preds = %invcont5111, %invcont5109, %eh_then5103
- %eh_ptr5108 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_ptr5033 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr5108 ) ; <i32>:25 [#uses=0]
- unreachable
-
-invcont5109: ; preds = %eh_then5103
- %tmp5110 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp5110( )
- to label %invcont5111 unwind label %unwind5107
-
-invcont5111: ; preds = %invcont5109
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([19 x i8]* @.str34 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.170.1990 to i32) to i64), i64 32)) )
- to label %cleanup5120 unwind label %unwind5107
-
-cleanup5120: ; preds = %invcont5111
- call void @__gnat_end_handler( i8* %eh_ptr5033 )
- br label %finally5098
-
-finally5098: ; preds = %cleanup5120, %cond_true5096, %invcont5091
- %tue.96161.7 = phi i8 [ %tue.96161.6, %cleanup5120 ], [ %tue.96161.5, %cond_true5096 ], [ %tue.96161.5, %invcont5091 ] ; <i8> [#uses=1]
- %mon.86171.3 = phi i8 [ %mon.86171.2, %cleanup5120 ], [ %mon.86171.1, %cond_true5096 ], [ %mon.86171.1, %invcont5091 ] ; <i8> [#uses=2]
- %wed.6 = phi i8 [ %wed.4, %cleanup5120 ], [ 3, %cond_true5096 ], [ %wed.4, %invcont5091 ] ; <i8> [#uses=5]
- %not.tmp5135 = icmp uge i8 %tmp137138, %sat.45934.0 ; <i1> [#uses=1]
- %tmp5151 = icmp uge i8 %sat.45934.0, %tmp306307 ; <i1> [#uses=1]
- %tmp5155 = icmp ule i8 %sat.45934.0, %wed.6 ; <i1> [#uses=1]
- %tmp5159 = and i1 %tmp5155, %tmp5151 ; <i1> [#uses=1]
- %tmp5177 = icmp ult i8 %wed.6, %tmp272273 ; <i1> [#uses=1]
- %tmp5184 = icmp ugt i8 %wed.6, %tue.96161.7 ; <i1> [#uses=1]
- %bothcond5907 = or i1 %tmp5177, %tmp5184 ; <i1> [#uses=2]
- %not.bothcond5907 = xor i1 %bothcond5907, true ; <i1> [#uses=1]
- %tmp5198 = icmp uge i8 %tmp272273, %mon.86171.3 ; <i1> [#uses=1]
- %tmp5202 = icmp ule i8 %tmp272273, %tmp137138 ; <i1> [#uses=1]
- %tmp5206 = and i1 %tmp5198, %tmp5202 ; <i1> [#uses=1]
- %not.bothcond5908 = icmp uge i8 %tmp306307, %sat.45934.0 ; <i1> [#uses=1]
- %tmp5244 = icmp uge i8 %wed.6, %tmp306307 ; <i1> [#uses=1]
- %tmp5248 = icmp ule i8 %wed.6, %mon.86171.3 ; <i1> [#uses=1]
- %tmp5252 = and i1 %tmp5244, %tmp5248 ; <i1> [#uses=1]
- %tmp5164 = or i1 %not.tmp5135, %not.bothcond5908 ; <i1> [#uses=1]
- %tmp5194 = or i1 %tmp5164, %tmp5206 ; <i1> [#uses=1]
- %tmp5210 = or i1 %tmp5194, %tmp5159 ; <i1> [#uses=1]
- %tmp5240 = or i1 %tmp5210, %not.bothcond5907 ; <i1> [#uses=1]
- %tmp5256 = or i1 %tmp5240, %tmp5252 ; <i1> [#uses=1]
- br i1 %tmp5256, label %cond_true5259, label %cond_next5271
-
-cond_true5259: ; preds = %finally5098
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([27 x i8]* @.str35 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.178.2066 to i32) to i64), i64 32)) )
- to label %cond_next5271 unwind label %unwind5266
-
-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
- %eh_ptr5267 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
- %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 ) ; <i32> [#uses=1]
- %eh_typeid5473 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
- %tmp5475 = icmp eq i32 %eh_select5269, %eh_typeid5473 ; <i1> [#uses=1]
- br i1 %tmp5475, label %eh_then5476, label %Unwind
-
-cond_next5271: ; preds = %cond_true5259, %finally5098
- %tmp5273 = invoke i32 @report__ident_int( i32 0 )
- to label %invcont5272 unwind label %unwind5266 ; <i32> [#uses=2]
-
-invcont5272: ; preds = %cond_next5271
- %tmp5277 = icmp slt i32 %tmp5273, 10 ; <i1> [#uses=1]
- br i1 %tmp5277, label %bb5292, label %cond_next5281
-
-cond_next5281: ; preds = %invcont5272
- %tmp5283 = invoke i32 @report__ident_int( i32 -10 )
- to label %invcont5282 unwind label %unwind5266 ; <i32> [#uses=1]
-
-invcont5282: ; preds = %cond_next5281
- %tmp5287 = icmp sgt i32 %tmp5273, %tmp5283 ; <i1> [#uses=1]
- br i1 %tmp5287, label %bb5292, label %bb5293
-
-bb5292: ; preds = %invcont5282, %invcont5272
- br label %bb5293
-
-bb5293: ; preds = %bb5292, %invcont5282
- %iftmp.179.0 = phi i1 [ false, %bb5292 ], [ true, %invcont5282 ] ; <i1> [#uses=1]
- %tmp5295 = invoke i32 @report__ident_int( i32 10 )
- to label %invcont5294 unwind label %unwind5266 ; <i32> [#uses=1]
-
-invcont5294: ; preds = %bb5293
- %tmp5296 = icmp slt i32 %tmp5295, 1 ; <i1> [#uses=1]
- %tmp5304 = invoke i32 @report__ident_int( i32 0 )
- to label %invcont5303 unwind label %unwind5266 ; <i32> [#uses=2]
-
-invcont5303: ; preds = %invcont5294
- %tmp5306 = invoke i32 @report__ident_int( i32 -10 )
- to label %invcont5305 unwind label %unwind5266 ; <i32> [#uses=1]
-
-invcont5305: ; preds = %invcont5303
- %tmp5331 = invoke i32 @report__ident_int( i32 -20 )
- to label %invcont5330 unwind label %unwind5266 ; <i32> [#uses=1]
-
-invcont5330: ; preds = %invcont5305
- %tmp5310 = icmp slt i32 %tmp5304, %tmp5306 ; <i1> [#uses=1]
- %tmp5318 = icmp sgt i32 %tmp5304, -11 ; <i1> [#uses=1]
- %bothcond5909 = or i1 %tmp5310, %tmp5318 ; <i1> [#uses=1]
- %not.bothcond5909 = xor i1 %bothcond5909, true ; <i1> [#uses=1]
- %tmp5332 = icmp sgt i32 %tmp5331, -1 ; <i1> [#uses=1]
- %tmp5339 = invoke i32 @report__ident_int( i32 0 )
- to label %invcont5338 unwind label %unwind5266 ; <i32> [#uses=2]
-
-invcont5338: ; preds = %invcont5330
- %tmp5343 = icmp slt i32 %tmp5339, 6 ; <i1> [#uses=1]
- br i1 %tmp5343, label %bb5358, label %cond_next5347
-
-cond_next5347: ; preds = %invcont5338
- %tmp5349 = invoke i32 @report__ident_int( i32 5 )
- to label %invcont5348 unwind label %unwind5266 ; <i32> [#uses=1]
-
-invcont5348: ; preds = %cond_next5347
- %tmp5353 = icmp sgt i32 %tmp5339, %tmp5349 ; <i1> [#uses=1]
- br i1 %tmp5353, label %bb5358, label %bb5359
-
-bb5358: ; preds = %invcont5348, %invcont5338
- br label %bb5359
-
-bb5359: ; preds = %bb5358, %invcont5348
- %iftmp.181.0 = phi i1 [ false, %bb5358 ], [ true, %invcont5348 ] ; <i1> [#uses=1]
- %tmp5366 = invoke i32 @report__ident_int( i32 0 )
- to label %invcont5365 unwind label %unwind5266 ; <i32> [#uses=2]
-
-invcont5365: ; preds = %bb5359
- %tmp5370 = icmp slt i32 %tmp5366, 7 ; <i1> [#uses=1]
- br i1 %tmp5370, label %bb5385, label %cond_next5374
-
-cond_next5374: ; preds = %invcont5365
- %tmp5376 = invoke i32 @report__ident_int( i32 3 )
- to label %invcont5375 unwind label %unwind5266 ; <i32> [#uses=1]
-
-invcont5375: ; preds = %cond_next5374
- %tmp5380 = icmp sgt i32 %tmp5366, %tmp5376 ; <i1> [#uses=1]
- br i1 %tmp5380, label %bb5385, label %bb5386
-
-bb5385: ; preds = %invcont5375, %invcont5365
- br label %bb5386
-
-bb5386: ; preds = %bb5385, %invcont5375
- %iftmp.182.0 = phi i1 [ false, %bb5385 ], [ true, %invcont5375 ] ; <i1> [#uses=1]
- %tmp5301 = or i1 %tmp5296, %iftmp.179.0 ; <i1> [#uses=1]
- %tmp5328 = or i1 %tmp5301, %not.bothcond5909 ; <i1> [#uses=1]
- %tmp5336 = or i1 %tmp5328, %tmp5332 ; <i1> [#uses=1]
- %tmp5363 = or i1 %tmp5336, %iftmp.181.0 ; <i1> [#uses=1]
- %tmp5390 = or i1 %tmp5363, %iftmp.182.0 ; <i1> [#uses=1]
- br i1 %tmp5390, label %cond_true5393, label %cond_next5401
-
-cond_true5393: ; preds = %bb5386
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([27 x i8]* @.str36 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.178.2066 to i32) to i64), i64 32)) )
- to label %cond_next5401 unwind label %unwind5266
-
-cond_next5401: ; preds = %cond_true5393, %bb5386
- %tmp5430 = invoke i32 @report__ident_int( i32 0 )
- to label %invcont5429 unwind label %unwind5266 ; <i32> [#uses=2]
-
-invcont5429: ; preds = %cond_next5401
- %tmp5432 = invoke i32 @report__ident_int( i32 4 )
- to label %invcont5431 unwind label %unwind5266 ; <i32> [#uses=1]
-
-invcont5431: ; preds = %invcont5429
- %tmp5436 = icmp slt i32 %tmp5430, %tmp5432 ; <i1> [#uses=1]
- %tmp5444 = icmp sgt i32 %tmp5430, -4 ; <i1> [#uses=1]
- %bothcond5911 = or i1 %tmp5436, %tmp5444 ; <i1> [#uses=1]
- %tmp5457 = and i1 %bothcond5911, %bothcond5907 ; <i1> [#uses=1]
- br i1 %tmp5457, label %finally5471, label %cond_true5462
-
-cond_true5462: ; preds = %invcont5431
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([29 x i8]* @.str37 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.36.923 to i32) to i64), i64 32)) )
- to label %finally5471 unwind label %unwind5266
-
-eh_then5476: ; preds = %unwind5266
- invoke void @__gnat_begin_handler( i8* %eh_ptr5267 )
- to label %invcont5482 unwind label %unwind5480
-
-unwind5480: ; preds = %invcont5484, %invcont5482, %eh_then5476
- %eh_ptr5481 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
- call void @__gnat_end_handler( i8* %eh_ptr5267 )
- call i32 (...)* @_Unwind_Resume( i8* %eh_ptr5481 ) ; <i32>:26 [#uses=0]
- unreachable
-
-invcont5482: ; preds = %eh_then5476
- %tmp5483 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
- invoke void %tmp5483( )
- to label %invcont5484 unwind label %unwind5480
-
-invcont5484: ; preds = %invcont5482
- invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([19 x i8]* @.str38 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.170.1990 to i32) to i64), i64 32)) )
- to label %cleanup5493 unwind label %unwind5480
-
-cleanup5493: ; preds = %invcont5484
- call void @__gnat_end_handler( i8* %eh_ptr5267 )
- call void @report__result( )
- ret void
-
-finally5471: ; preds = %cond_true5462, %invcont5431
- call void @report__result( )
- ret void
-
-Unwind: ; preds = %unwind5266, %unwind5032, %unwind4919, %unwind4770, %unwind3880, %unwind3618, %unwind3393, %eh_else3366, %eh_else3016, %eh_else2666, %eh_else1330, %eh_else932, %eh_else823
- %eh_exception.2 = phi i8* [ %eh_exception.05914.1, %eh_else823 ], [ %eh_ptr872, %eh_else932 ], [ %eh_ptr975, %eh_else1330 ], [ %eh_exception.296030.1, %eh_else2666 ], [ %eh_exception.336046.1, %eh_else3016 ], [ %eh_exception.396074.1, %eh_else3366 ], [ %eh_ptr3394, %unwind3393 ], [ %eh_ptr3619, %unwind3618 ], [ %eh_ptr3881, %unwind3880 ], [ %eh_ptr4771, %unwind4770 ], [ %eh_ptr4920, %unwind4919 ], [ %eh_ptr5033, %unwind5032 ], [ %eh_ptr5267, %unwind5266 ] ; <i8*> [#uses=1]
- call i32 (...)* @_Unwind_Resume( i8* %eh_exception.2 ) ; <i32>:27 [#uses=0]
- unreachable
-
-UnifiedUnreachableBlock34: ; preds = %cond_true5031, %cond_true4918, %cond_true4609, %cond_true4504, %cond_true4481, %cond_true4187, %cond_true4117, %cond_true4027, %cond_true3935, %cond_true3907, %cond_true3729, %cond_true3675, %cond_true3617, %cond_true3543, %cond_true3448, %cond_true3420, %bb3227, %bb3193, %bb3171, %cond_true3061, %bb2877, %bb2843, %bb2821, %cond_true2711, %bb2558, %bb2524, %bb2506, %cond_true2410, %bb2203, %cond_true2171, %cond_true1946, %bb1605, %cond_true1573, %cond_true1546, %cond_true1418, %cond_true973, %cond_true870, %cond_true663, %cond_true637, %cond_true611, %cond_true585, %cond_true559, %cond_true533, %cond_true507, %cond_true465
- unreachable
-
-UnifiedReturnBlock35: ; preds = %cleanup4742, %invcont4719, %finally913, %cleanup928
- ret void
-}
-
-declare i32 @report__ident_int(i32)
-
-declare void @__gnat_rcheck_10(i8*, i32)
-
-declare void @__gnat_rcheck_12(i8*, i32)
-
-declare void @report__test(i64, i64)
-
-declare i8* @llvm.eh.exception()
-
-declare i32 @llvm.eh.selector.i32(i8*, i8*, ...)
-
-declare i32 @llvm.eh.typeid.for.i32(i8*)
-
-declare i32 @__gnat_eh_personality(...)
-
-declare i32 @_Unwind_Resume(...)
-
-declare void @system__secondary_stack__ss_mark(%struct.system__secondary_stack__mark_id* sret )
-
-declare void @system__img_int__image_integer(%struct.string___XUP* sret , i32)
-
-declare void @system__string_ops__str_concat(%struct.string___XUP* sret , i64, i64)
-
-declare void @report__failed(i64)
-
-declare void @system__secondary_stack__ss_release(i64)
-
-declare void @__gnat_begin_handler(i8*)
-
-declare void @__gnat_end_handler(i8*)
-
-declare i8 @report__equal(i32, i32)
-
-declare i8* @llvm.stacksave()
-
-declare void @__gnat_rcheck_07(i8*, i32)
-
-declare i8* @__gnat_malloc(i32)
-
-declare void @llvm.stackrestore(i8*)
-
-declare void @llvm.memcpy.i32(i8*, i8*, i32, i32)
-
-declare void @__gnat_rcheck_05(i8*, i32)
-
-declare void @__gnat_rcheck_06(i8*, i32)
-
-declare void @system__img_enum__image_enumeration_8(%struct.string___XUP* sret , i32, i64, i8*)
-
-declare i32 @memcmp(i8*, i8*, i32, ...)
-
-declare void @report__result()
-
-; CHECK: {{Llabel138.*Region start}}
-; CHECK-NEXT: Region length
-; CHECK-NEXT: Landing pad
-; CHECK-NEXT: {{3.*Action}}
diff --git a/test/CodeGen/Generic/addc-fold2.ll b/test/CodeGen/Generic/addc-fold2.ll
deleted file mode 100644
index 34f5ac1b9814e..0000000000000
--- a/test/CodeGen/Generic/addc-fold2.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; RUN: llc < %s -march=x86 | grep add
-; RUN: llc < %s -march=x86 | not grep adc
-
-define i64 @test(i64 %A, i32 %B) {
- %tmp12 = zext i32 %B to i64 ; <i64> [#uses=1]
- %tmp3 = shl i64 %tmp12, 32 ; <i64> [#uses=1]
- %tmp5 = add i64 %tmp3, %A ; <i64> [#uses=1]
- ret i64 %tmp5
-}
-
diff --git a/test/CodeGen/Generic/fpowi-promote.ll b/test/CodeGen/Generic/fpowi-promote.ll
index 82628ef6093b7..8dacebed73766 100644
--- a/test/CodeGen/Generic/fpowi-promote.ll
+++ b/test/CodeGen/Generic/fpowi-promote.ll
@@ -1,5 +1,4 @@
; RUN: llc < %s
-; RUN: llc < %s -march=x86 -mcpu=i386
; PR1239
diff --git a/test/CodeGen/Generic/switch-lower-feature-2.ll b/test/CodeGen/Generic/switch-lower-feature-2.ll
deleted file mode 100644
index 80e0618e05f5d..0000000000000
--- a/test/CodeGen/Generic/switch-lower-feature-2.ll
+++ /dev/null
@@ -1,50 +0,0 @@
-; RUN: llc < %s -march=x86 -o %t
-; RUN: grep jb %t | count 1
-; RUN: grep \\\$6 %t | count 2
-; RUN: grep 1024 %t | count 1
-; RUN: grep 1023 %t | count 1
-; RUN: grep 119 %t | count 1
-; RUN: grep JTI %t | count 2
-; RUN: grep jg %t | count 3
-; RUN: grep ja %t | count 1
-; RUN: grep jns %t | count 1
-
-target triple = "i686-pc-linux-gnu"
-
-define i32 @main(i32 %tmp158) {
-entry:
- switch i32 %tmp158, label %bb336 [
- i32 -2147483648, label %bb338
- i32 -2147483647, label %bb338
- i32 -2147483646, label %bb338
- i32 120, label %bb338
- i32 121, label %bb339
- i32 122, label %bb340
- i32 123, label %bb341
- i32 124, label %bb342
- i32 125, label %bb343
- i32 126, label %bb336
- i32 1024, label %bb338
- i32 0, label %bb338
- i32 1, label %bb338
- i32 2, label %bb338
- i32 3, label %bb338
- i32 4, label %bb338
- i32 5, label %bb338
- ]
-bb336:
- ret i32 10
-bb338:
- ret i32 11
-bb339:
- ret i32 12
-bb340:
- ret i32 13
-bb341:
- ret i32 14
-bb342:
- ret i32 15
-bb343:
- ret i32 18
-
-}
diff --git a/test/CodeGen/Generic/switch-lower-feature.ll b/test/CodeGen/Generic/switch-lower-feature.ll
index 65fdf5add7900..1e9dbeeda341a 100644
--- a/test/CodeGen/Generic/switch-lower-feature.ll
+++ b/test/CodeGen/Generic/switch-lower-feature.ll
@@ -1,10 +1,6 @@
-; RUN: llc < %s -march=x86 -o - | grep {\$7} | count 1
-; RUN: llc < %s -march=x86 -o - | grep {\$6} | count 1
-; RUN: llc < %s -march=x86 -o - | grep 1024 | count 1
-; RUN: llc < %s -march=x86 -o - | grep jb | count 2
-; RUN: llc < %s -march=x86 -o - | grep je | count 1
+; RUN: llc < %s
-define i32 @main(i32 %tmp158) {
+define i32 @test(i32 %tmp158) {
entry:
switch i32 %tmp158, label %bb336 [
i32 120, label %bb338
@@ -27,3 +23,41 @@ bb336:
bb338:
ret i32 11
}
+
+define i32 @test2(i32 %tmp158) {
+entry:
+ switch i32 %tmp158, label %bb336 [
+ i32 -2147483648, label %bb338
+ i32 -2147483647, label %bb338
+ i32 -2147483646, label %bb338
+ i32 120, label %bb338
+ i32 121, label %bb339
+ i32 122, label %bb340
+ i32 123, label %bb341
+ i32 124, label %bb342
+ i32 125, label %bb343
+ i32 126, label %bb336
+ i32 1024, label %bb338
+ i32 0, label %bb338
+ i32 1, label %bb338
+ i32 2, label %bb338
+ i32 3, label %bb338
+ i32 4, label %bb338
+ i32 5, label %bb338
+ ]
+bb336:
+ ret i32 10
+bb338:
+ ret i32 11
+bb339:
+ ret i32 12
+bb340:
+ ret i32 13
+bb341:
+ ret i32 14
+bb342:
+ ret i32 15
+bb343:
+ ret i32 18
+
+}
diff --git a/test/CodeGen/PowerPC/2007-04-30-InlineAsmEarlyClobber.ll b/test/CodeGen/PowerPC/2007-04-30-InlineAsmEarlyClobber.ll
index c4ed1663a495b..d1d28ae15b0da 100644
--- a/test/CodeGen/PowerPC/2007-04-30-InlineAsmEarlyClobber.ll
+++ b/test/CodeGen/PowerPC/2007-04-30-InlineAsmEarlyClobber.ll
@@ -1,7 +1,7 @@
; RUN: llc < %s | grep {subfc r3,r5,r4}
; RUN: llc < %s | grep {subfze r4,r2}
-; RUN: llc < %s -regalloc=local | grep {subfc r5,r4,r3}
-; RUN: llc < %s -regalloc=local | grep {subfze r2,r2}
+; RUN: llc < %s -regalloc=local | grep {subfc r2,r5,r4}
+; RUN: llc < %s -regalloc=local | grep {subfze r3,r3}
; The first argument of subfc must not be the same as any other register.
; PR1357
diff --git a/test/CodeGen/PowerPC/2008-01-25-EmptyFunction.ll b/test/CodeGen/PowerPC/2008-01-25-EmptyFunction.ll
index db2ab877ff7d2..a05245d542fca 100644
--- a/test/CodeGen/PowerPC/2008-01-25-EmptyFunction.ll
+++ b/test/CodeGen/PowerPC/2008-01-25-EmptyFunction.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=ppc32 | grep nop
+; RUN: llc < %s -march=ppc32 | grep .byte
target triple = "powerpc-apple-darwin8"
diff --git a/test/CodeGen/PowerPC/2010-02-04-EmptyGlobal.ll b/test/CodeGen/PowerPC/2010-02-04-EmptyGlobal.ll
new file mode 100644
index 0000000000000..32ddb3484812d
--- /dev/null
+++ b/test/CodeGen/PowerPC/2010-02-04-EmptyGlobal.ll
@@ -0,0 +1,11 @@
+; RUN: llc < %s -mtriple=powerpc-apple-darwin10 -relocation-model=pic -disable-fp-elim | FileCheck %s
+; <rdar://problem/7604010>
+
+%cmd.type = type { }
+
+@_cmd = constant %cmd.type zeroinitializer
+
+; CHECK: .globl __cmd
+; CHECK-NEXT: .align 3
+; CHECK-NEXT: __cmd:
+; CHECK-NEXT: .space 1
diff --git a/test/CodeGen/PowerPC/2010-02-12-saveCR.ll b/test/CodeGen/PowerPC/2010-02-12-saveCR.ll
new file mode 100644
index 0000000000000..b73382e6ebfd9
--- /dev/null
+++ b/test/CodeGen/PowerPC/2010-02-12-saveCR.ll
@@ -0,0 +1,30 @@
+; RUN: llc < %s -mtriple=powerpc-apple-darwin | FileCheck %s
+; ModuleID = 'hh.c'
+target datalayout = "E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f128:64:128-n32"
+target triple = "powerpc-apple-darwin9.6"
+; This formerly used R0 for both the stack address and CR.
+
+define void @foo() nounwind {
+entry:
+;CHECK: mfcr r2
+;CHECK: rlwinm r2, r2, 8, 0, 31
+;CHECK: lis r0, 1
+;CHECK: ori r0, r0, 34540
+;CHECK: stwx r2, r1, r0
+ %x = alloca [100000 x i8] ; <[100000 x i8]*> [#uses=1]
+ %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
+ %x1 = bitcast [100000 x i8]* %x to i8* ; <i8*> [#uses=1]
+ call void @bar(i8* %x1) nounwind
+ call void asm sideeffect "", "~{cr2}"() nounwind
+ br label %return
+
+return: ; preds = %entry
+;CHECK: lis r0, 1
+;CHECK: ori r0, r0, 34540
+;CHECK: lwzx r2, r1, r0
+;CHECK: rlwinm r2, r2, 24, 0, 31
+;CHECK: mtcrf 32, r2
+ ret void
+}
+
+declare void @bar(i8*)
diff --git a/test/CodeGen/PowerPC/align.ll b/test/CodeGen/PowerPC/align.ll
index e619faa75173a..109a83726e98f 100644
--- a/test/CodeGen/PowerPC/align.ll
+++ b/test/CodeGen/PowerPC/align.ll
@@ -1,11 +1,42 @@
-; RUN: llc < %s -march=ppc32 | \
-; RUN: grep align.4 | count 1
-; RUN: llc < %s -march=ppc32 | \
-; RUN: grep align.2 | count 1
-; RUN: llc < %s -march=ppc32 | \
-; RUN: grep align.3 | count 1
+; RUN: llc < %s -mtriple=powerpc-linux-gnu | FileCheck %s -check-prefix=ELF
+; RUN: llc < %s -mtriple=powerpc-apple-darwin9 | FileCheck %s -check-prefix=DARWIN
-@A = global <4 x i32> < i32 10, i32 20, i32 30, i32 40 > ; <<4 x i32>*> [#uses=0]
-@B = global float 1.000000e+02 ; <float*> [#uses=0]
-@C = global double 2.000000e+03 ; <double*> [#uses=0]
+@a = global i1 true
+; no alignment
+@b = global i8 1
+; no alignment
+
+@c = global i16 2
+;ELF: .align 1
+;ELF: c:
+;DARWIN: .align 1
+;DARWIN: _c:
+
+@d = global i32 3
+;ELF: .align 2
+;ELF: d:
+;DARWIN: .align 2
+;DARWIN: _d:
+
+@e = global i64 4
+;ELF: .align 3
+;ELF: e
+;DARWIN: .align 3
+;DARWIN: _e:
+
+@f = global float 5.0
+;ELF: .align 2
+;ELF: f:
+;DARWIN: .align 2
+;DARWIN: _f:
+
+@g = global double 6.0
+;ELF: .align 3
+;ELF: g:
+;DARWIN: .align 3
+;DARWIN: _g:
+
+@bar = common global [75 x i8] zeroinitializer, align 128
+;ELF: .comm bar,75,128
+;DARWIN: .comm _bar,75,7
diff --git a/test/CodeGen/SPARC/ctpop.ll b/test/CodeGen/SPARC/ctpop.ll
index 37d1c5a5706df..e56f4947b52af 100644
--- a/test/CodeGen/SPARC/ctpop.ll
+++ b/test/CodeGen/SPARC/ctpop.ll
@@ -1,7 +1,5 @@
-; RUN: llc < %s -march=sparc -mattr=v9 -enable-sparc-v9-insts
-; RUN: llc < %s -march=sparc -mattr=-v9 | \
-; RUN: not grep popc
-; RUN: llc < %s -march=sparc -mattr=v9 -enable-sparc-v9-insts | grep popc
+; RUN: llc < %s -march=sparc -mattr=-v9 | not grep popc
+; RUN: llc < %s -march=sparcv9 -mattr=v9 | grep popc
declare i32 @llvm.ctpop.i32(i32)
diff --git a/test/CodeGen/Thumb2/2010-02-11-phi-cycle.ll b/test/CodeGen/Thumb2/2010-02-11-phi-cycle.ll
new file mode 100644
index 0000000000000..363f5719d17cf
--- /dev/null
+++ b/test/CodeGen/Thumb2/2010-02-11-phi-cycle.ll
@@ -0,0 +1,76 @@
+; RUN: llc < %s -mtriple=thumbv7-apple-darwin | FileCheck %s
+target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:32-n32"
+
+define arm_apcscc i32 @test(i32 %n) nounwind {
+; CHECK: test:
+; CHECK-NOT: mov
+; CHECK: return
+entry:
+ %0 = icmp eq i32 %n, 1 ; <i1> [#uses=1]
+ br i1 %0, label %return, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %tmp = add i32 %n, -1 ; <i32> [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb.nph, %bb
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb ] ; <i32> [#uses=1]
+ %u.05 = phi i64 [ undef, %bb.nph ], [ %ins, %bb ] ; <i64> [#uses=1]
+ %1 = tail call arm_apcscc i32 @f() nounwind ; <i32> [#uses=1]
+ %tmp4 = zext i32 %1 to i64 ; <i64> [#uses=1]
+ %mask = and i64 %u.05, -4294967296 ; <i64> [#uses=1]
+ %ins = or i64 %tmp4, %mask ; <i64> [#uses=2]
+ tail call arm_apcscc void @g(i64 %ins) nounwind
+ %indvar.next = add i32 %indvar, 1 ; <i32> [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %tmp ; <i1> [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb, %entry
+ ret i32 undef
+}
+
+define arm_apcscc i32 @test_dead_cycle(i32 %n) nounwind {
+; CHECK: test_dead_cycle:
+; CHECK: blx
+; CHECK-NOT: mov
+; CHECK: blx
+entry:
+ %0 = icmp eq i32 %n, 1 ; <i1> [#uses=1]
+ br i1 %0, label %return, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %tmp = add i32 %n, -1 ; <i32> [#uses=2]
+ br label %bb
+
+bb: ; preds = %bb.nph, %bb2
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb2 ] ; <i32> [#uses=2]
+ %u.17 = phi i64 [ undef, %bb.nph ], [ %u.0, %bb2 ] ; <i64> [#uses=2]
+ %tmp9 = sub i32 %tmp, %indvar ; <i32> [#uses=1]
+ %1 = icmp sgt i32 %tmp9, 1 ; <i1> [#uses=1]
+ br i1 %1, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %2 = tail call arm_apcscc i32 @f() nounwind ; <i32> [#uses=1]
+ %tmp6 = zext i32 %2 to i64 ; <i64> [#uses=1]
+ %mask = and i64 %u.17, -4294967296 ; <i64> [#uses=1]
+ %ins = or i64 %tmp6, %mask ; <i64> [#uses=1]
+ tail call arm_apcscc void @g(i64 %ins) nounwind
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+; also check for duplicate induction variables (radar 7645034)
+; CHECK: subs r{{.*}}, #1
+; CHECK-NOT: subs r{{.*}}, #1
+; CHECK: pop
+ %u.0 = phi i64 [ %ins, %bb1 ], [ %u.17, %bb ] ; <i64> [#uses=2]
+ %indvar.next = add i32 %indvar, 1 ; <i32> [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %tmp ; <i1> [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb2, %entry
+ ret i32 undef
+}
+
+declare arm_apcscc i32 @f()
+
+declare arm_apcscc void @g(i64)
diff --git a/test/CodeGen/Thumb2/cross-rc-coalescing-2.ll b/test/CodeGen/Thumb2/cross-rc-coalescing-2.ll
index 8f6449e8ffd5f..2b209319792d0 100644
--- a/test/CodeGen/Thumb2/cross-rc-coalescing-2.ll
+++ b/test/CodeGen/Thumb2/cross-rc-coalescing-2.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -mtriple=thumbv7-apple-darwin9 -mcpu=cortex-a8 | grep vmov.f32 | count 7
+; RUN: llc < %s -mtriple=thumbv7-apple-darwin9 -mcpu=cortex-a8 | grep vmov.f32 | count 3
define arm_apcscc void @fht(float* nocapture %fz, i16 signext %n) nounwind {
entry:
diff --git a/test/CodeGen/Thumb2/lsr-deficiency.ll b/test/CodeGen/Thumb2/lsr-deficiency.ll
index 7b1b57a786ece..ac2cd34e4b34a 100644
--- a/test/CodeGen/Thumb2/lsr-deficiency.ll
+++ b/test/CodeGen/Thumb2/lsr-deficiency.ll
@@ -1,25 +1,29 @@
; RUN: llc < %s -mtriple=thumbv7-apple-darwin10 -relocation-model=pic | FileCheck %s
; rdar://7387640
-; FIXME: We still need to rewrite array reference iv of stride -4 with loop
-; count iv of stride -1.
+; This now reduces to a single induction variable.
+
+; TODO: It still gets a GPR shuffle at the end of the loop
+; This is because something in instruction selection has decided
+; that comparing the pre-incremented value with zero is better
+; than comparing the post-incremented value with -4.
@G = external global i32 ; <i32*> [#uses=2]
@array = external global i32* ; <i32**> [#uses=1]
define arm_apcscc void @t() nounwind optsize {
; CHECK: t:
-; CHECK: mov.w r2, #4000
-; CHECK: movw r3, #1001
+; CHECK: mov.w r2, #1000
entry:
%.pre = load i32* @G, align 4 ; <i32> [#uses=1]
br label %bb
bb: ; preds = %bb, %entry
; CHECK: LBB1_1:
-; CHECK: subs r3, #1
-; CHECK: cmp r3, #0
-; CHECK: sub.w r2, r2, #4
+; CHECK: cmp r2, #0
+; CHECK: sub.w r9, r2, #1
+; CHECK: mov r2, r9
+
%0 = phi i32 [ %.pre, %entry ], [ %3, %bb ] ; <i32> [#uses=1]
%indvar = phi i32 [ 0, %entry ], [ %indvar.next, %bb ] ; <i32> [#uses=2]
%tmp5 = sub i32 1000, %indvar ; <i32> [#uses=1]
diff --git a/test/CodeGen/Thumb2/thumb2-ifcvt1.ll b/test/CodeGen/Thumb2/thumb2-ifcvt1.ll
index 71199abc57286..1d267565e06cc 100644
--- a/test/CodeGen/Thumb2/thumb2-ifcvt1.ll
+++ b/test/CodeGen/Thumb2/thumb2-ifcvt1.ll
@@ -1,6 +1,6 @@
; RUN: llc < %s -mtriple=thumbv7-apple-darwin | FileCheck %s
-define i32 @t1(i32 %a, i32 %b, i32 %c, i32 %d) {
+define i32 @t1(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
; CHECK: t1:
; CHECK: it ne
; CHECK: cmpne
@@ -20,12 +20,12 @@ cond_next:
}
; FIXME: Check for # of unconditional branch after adding branch folding post ifcvt.
-define i32 @t2(i32 %a, i32 %b) {
+define i32 @t2(i32 %a, i32 %b) nounwind {
entry:
; CHECK: t2:
-; CHECK: ite le
-; CHECK: suble
+; CHECK: ite gt
; CHECK: subgt
+; CHECK: suble
%tmp1434 = icmp eq i32 %a, %b ; <i1> [#uses=1]
br i1 %tmp1434, label %bb17, label %bb.outer
@@ -60,14 +60,14 @@ bb17: ; preds = %cond_false, %cond_true, %entry
@x = external global i32* ; <i32**> [#uses=1]
-define void @foo(i32 %a) {
+define void @foo(i32 %a) nounwind {
entry:
%tmp = load i32** @x ; <i32*> [#uses=1]
store i32 %a, i32* %tmp
ret void
}
-define void @t3(i32 %a, i32 %b) {
+define void @t3(i32 %a, i32 %b) nounwind {
entry:
; CHECK: t3:
; CHECK: it lt
diff --git a/test/CodeGen/Thumb2/thumb2-spill-q.ll b/test/CodeGen/Thumb2/thumb2-spill-q.ll
index 2b087893fd6a5..ff178b42fb360 100644
--- a/test/CodeGen/Thumb2/thumb2-spill-q.ll
+++ b/test/CodeGen/Thumb2/thumb2-spill-q.ll
@@ -12,8 +12,8 @@ declare <4 x float> @llvm.arm.neon.vld1.v4f32(i8*) nounwind readonly
define arm_apcscc void @aaa(%quuz* %this, i8* %block) {
; CHECK: aaa:
; CHECK: bic r4, r4, #15
-; CHECK: vst1.64 {{.*}}sp, :128
-; CHECK: vld1.64 {{.*}}sp, :128
+; CHECK: vst1.64 {{.*}}[{{.*}}, :128]
+; CHECK: vld1.64 {{.*}}[{{.*}}, :128]
entry:
%0 = call <4 x float> @llvm.arm.neon.vld1.v4f32(i8* undef) nounwind ; <<4 x float>> [#uses=1]
store float 6.300000e+01, float* undef, align 4
diff --git a/test/CodeGen/X86/2006-05-11-InstrSched.ll b/test/CodeGen/X86/2006-05-11-InstrSched.ll
index bdbe713a29568..56d6aa960e213 100644
--- a/test/CodeGen/X86/2006-05-11-InstrSched.ll
+++ b/test/CodeGen/X86/2006-05-11-InstrSched.ll
@@ -1,5 +1,5 @@
; RUN: llc < %s -march=x86 -mattr=+sse2 -stats -realign-stack=0 |&\
-; RUN: grep {asm-printer} | grep 31
+; RUN: grep {asm-printer} | grep 34
target datalayout = "e-p:32:32"
define void @foo(i32* %mc, i32* %bp, i32* %ms, i32* %xmb, i32* %mpp, i32* %tpmm, i32* %ip, i32* %tpim, i32* %dpp, i32* %tpdm, i32* %bpi, i32 %M) nounwind {
@@ -40,7 +40,7 @@ cond_true: ; preds = %cond_true, %entry
%tmp137.upgrd.7 = bitcast i32* %tmp137 to <2 x i64>* ; <<2 x i64>*> [#uses=1]
store <2 x i64> %tmp131, <2 x i64>* %tmp137.upgrd.7
%tmp147 = add nsw i32 %tmp.10, 8 ; <i32> [#uses=1]
- %tmp.upgrd.8 = icmp slt i32 %tmp147, %M ; <i1> [#uses=1]
+ %tmp.upgrd.8 = icmp ne i32 %tmp147, %M ; <i1> [#uses=1]
%indvar.next = add i32 %indvar, 1 ; <i32> [#uses=1]
br i1 %tmp.upgrd.8, label %cond_true, label %return
diff --git a/test/CodeGen/Generic/2006-12-16-InlineAsmCrash.ll b/test/CodeGen/X86/2006-12-16-InlineAsmCrash.ll
index 50a244b9e05bf..50a244b9e05bf 100644
--- a/test/CodeGen/Generic/2006-12-16-InlineAsmCrash.ll
+++ b/test/CodeGen/X86/2006-12-16-InlineAsmCrash.ll
diff --git a/test/CodeGen/Generic/2007-02-23-DAGCombine-Miscompile.ll b/test/CodeGen/X86/2007-02-23-DAGCombine-Miscompile.ll
index a8f0e576b95e7..a8f0e576b95e7 100644
--- a/test/CodeGen/Generic/2007-02-23-DAGCombine-Miscompile.ll
+++ b/test/CodeGen/X86/2007-02-23-DAGCombine-Miscompile.ll
diff --git a/test/CodeGen/X86/2007-03-15-GEP-Idx-Sink.ll b/test/CodeGen/X86/2007-03-15-GEP-Idx-Sink.ll
index 4cac9b4c4a216..e1f890192d127 100644
--- a/test/CodeGen/X86/2007-03-15-GEP-Idx-Sink.ll
+++ b/test/CodeGen/X86/2007-03-15-GEP-Idx-Sink.ll
@@ -1,7 +1,7 @@
; RUN: llc < %s -march=x86 -mtriple=i686-darwin | \
; RUN: grep push | count 3
-define void @foo(i8** %buf, i32 %size, i32 %col, i8* %p) {
+define void @foo(i8** %buf, i32 %size, i32 %col, i8* %p) nounwind {
entry:
icmp sgt i32 %size, 0 ; <i1>:0 [#uses=1]
br i1 %0, label %bb.preheader, label %return
diff --git a/test/CodeGen/X86/2007-10-05-3AddrConvert.ll b/test/CodeGen/X86/2007-10-05-3AddrConvert.ll
index 67323e87eff57..2c2706de5d3a5 100644
--- a/test/CodeGen/X86/2007-10-05-3AddrConvert.ll
+++ b/test/CodeGen/X86/2007-10-05-3AddrConvert.ll
@@ -36,7 +36,9 @@ bb.i6.i: ; preds = %bb.i6.i, %stepsystem.exit.i
bb107.i.i: ; preds = %bb107.i.i, %bb.i6.i
%q_addr.0.i.i.in = phi %struct.bnode** [ null, %bb107.i.i ], [ %4, %bb.i6.i ] ; <%struct.bnode**> [#uses=1]
- %q_addr.0.i.i = load %struct.bnode** %q_addr.0.i.i.in ; <%struct.bnode*> [#uses=0]
+ %q_addr.0.i.i = load %struct.bnode** %q_addr.0.i.i.in ; <%struct.bnode*> [#uses=1]
+ %q_addr.1 = getelementptr %struct.anon* %0, i32 0, i32 4, i32 1
+ store %struct.bnode* %q_addr.0.i.i, %struct.bnode** %q_addr.1, align 4
br label %bb107.i.i
bb47.loopexit.i: ; preds = %bb32.i
diff --git a/test/CodeGen/X86/2007-11-30-LoadFolding-Bug.ll b/test/CodeGen/X86/2007-11-30-LoadFolding-Bug.ll
index 721d4c945b144..8e315f4d80ff4 100644
--- a/test/CodeGen/X86/2007-11-30-LoadFolding-Bug.ll
+++ b/test/CodeGen/X86/2007-11-30-LoadFolding-Bug.ll
@@ -35,7 +35,7 @@ cond_next36.i: ; preds = %cond_next.i
bb.i28.i: ; preds = %bb.i28.i, %cond_next36.i
; CHECK: %bb.i28.i
; CHECK: addl $2
-; CHECK: addl $2
+; CHECK: addl $-2
%j.0.reg2mem.0.i16.i = phi i32 [ 0, %cond_next36.i ], [ %indvar.next39.i, %bb.i28.i ] ; <i32> [#uses=2]
%din_addr.1.reg2mem.0.i17.i = phi double [ 0.000000e+00, %cond_next36.i ], [ %tmp16.i25.i, %bb.i28.i ] ; <double> [#uses=1]
%tmp1.i18.i = fptosi double %din_addr.1.reg2mem.0.i17.i to i32 ; <i32> [#uses=2]
diff --git a/test/CodeGen/X86/2007-11-30-TestLoadFolding.ll b/test/CodeGen/X86/2007-11-30-TestLoadFolding.ll
deleted file mode 100644
index debb46121698f..0000000000000
--- a/test/CodeGen/X86/2007-11-30-TestLoadFolding.ll
+++ /dev/null
@@ -1,58 +0,0 @@
-; RUN: llc < %s -march=x86 -stats |& \
-; RUN: grep {1 .*folded into instructions}
-; RUN: llc < %s -march=x86 | grep cmp | count 4
-
- %struct.quad_struct = type { i32, i32, %struct.quad_struct*, %struct.quad_struct*, %struct.quad_struct*, %struct.quad_struct*, %struct.quad_struct* }
-
-define fastcc i32 @perimeter(%struct.quad_struct* %tree, i32 %size) {
-entry:
- %tree.idx7.val = load %struct.quad_struct** null ; <%struct.quad_struct*> [#uses=1]
- %tmp8.i51 = icmp eq %struct.quad_struct* %tree.idx7.val, null ; <i1> [#uses=2]
- br i1 %tmp8.i51, label %cond_next, label %cond_next.i52
-
-cond_next.i52: ; preds = %entry
- ret i32 0
-
-cond_next: ; preds = %entry
- %tmp59 = load i32* null, align 4 ; <i32> [#uses=1]
- %tmp70 = icmp eq i32 %tmp59, 2 ; <i1> [#uses=1]
- br i1 %tmp70, label %cond_true.i35, label %bb80
-
-cond_true.i35: ; preds = %cond_next
- %tmp14.i.i37 = load %struct.quad_struct** null, align 4 ; <%struct.quad_struct*> [#uses=1]
- %tmp3.i160 = load i32* null, align 4 ; <i32> [#uses=1]
- %tmp4.i161 = icmp eq i32 %tmp3.i160, 2 ; <i1> [#uses=1]
- br i1 %tmp4.i161, label %cond_true.i163, label %cond_false.i178
-
-cond_true.i163: ; preds = %cond_true.i35
- %tmp7.i162 = sdiv i32 %size, 4 ; <i32> [#uses=2]
- %tmp13.i168 = tail call fastcc i32 @sum_adjacent( %struct.quad_struct* null, i32 3, i32 2, i32 %tmp7.i162 ) ; <i32> [#uses=1]
- %tmp18.i11.i170 = getelementptr %struct.quad_struct* %tmp14.i.i37, i32 0, i32 4 ; <%struct.quad_struct**> [#uses=1]
- %tmp19.i12.i171 = load %struct.quad_struct** %tmp18.i11.i170, align 4 ; <%struct.quad_struct*> [#uses=1]
- %tmp21.i173 = tail call fastcc i32 @sum_adjacent( %struct.quad_struct* %tmp19.i12.i171, i32 3, i32 2, i32 %tmp7.i162 ) ; <i32> [#uses=1]
- %tmp22.i174 = add i32 %tmp21.i173, %tmp13.i168 ; <i32> [#uses=1]
- br i1 %tmp4.i161, label %cond_true.i141, label %cond_false.i156
-
-cond_false.i178: ; preds = %cond_true.i35
- ret i32 0
-
-cond_true.i141: ; preds = %cond_true.i163
- %tmp7.i140 = sdiv i32 %size, 4 ; <i32> [#uses=1]
- %tmp21.i151 = tail call fastcc i32 @sum_adjacent( %struct.quad_struct* null, i32 3, i32 2, i32 %tmp7.i140 ) ; <i32> [#uses=0]
- ret i32 0
-
-cond_false.i156: ; preds = %cond_true.i163
- %tmp22.i44 = add i32 0, %tmp22.i174 ; <i32> [#uses=0]
- br i1 %tmp8.i51, label %bb22.i, label %cond_next.i
-
-bb80: ; preds = %cond_next
- ret i32 0
-
-cond_next.i: ; preds = %cond_false.i156
- ret i32 0
-
-bb22.i: ; preds = %cond_false.i156
- ret i32 0
-}
-
-declare fastcc i32 @sum_adjacent(%struct.quad_struct*, i32, i32, i32)
diff --git a/test/CodeGen/X86/2008-01-25-EmptyFunction.ll b/test/CodeGen/X86/2008-01-25-EmptyFunction.ll
index b936686798f03..387645f743662 100644
--- a/test/CodeGen/X86/2008-01-25-EmptyFunction.ll
+++ b/test/CodeGen/X86/2008-01-25-EmptyFunction.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86 | grep nop
+; RUN: llc < %s -march=x86 | grep {.byte 0}
target triple = "i686-apple-darwin8"
diff --git a/test/CodeGen/X86/2008-07-11-SpillerBug.ll b/test/CodeGen/X86/2008-07-11-SpillerBug.ll
index 88a5fde07e1e7..548b44db6d272 100644
--- a/test/CodeGen/X86/2008-07-11-SpillerBug.ll
+++ b/test/CodeGen/X86/2008-07-11-SpillerBug.ll
@@ -1,9 +1,7 @@
-; RUN: llc < %s -march=x86 -relocation-model=static -disable-fp-elim -post-RA-scheduler=false | FileCheck %s
+; RUN: llc < %s -march=x86 -relocation-model=static -disable-fp-elim -post-RA-scheduler=false -asm-verbose=0 | FileCheck %s
; PR2536
-
-; CHECK: movw %cx
-; CHECK-NEXT: andl $65534, %
+; CHECK: andl $65534, %
; CHECK-NEXT: movl %
; CHECK-NEXT: movl $17
diff --git a/test/CodeGen/X86/2009-02-07-CoalescerBug.ll b/test/CodeGen/X86/2009-02-07-CoalescerBug.ll
deleted file mode 100644
index 2d0bbe607279f..0000000000000
--- a/test/CodeGen/X86/2009-02-07-CoalescerBug.ll
+++ /dev/null
@@ -1,491 +0,0 @@
-; RUN: llc < %s -march=x86 -relocation-model=pic -stats |& grep {Number of valno def marked dead} | grep 1
-; rdar://6566708
-
-target triple = "i386-apple-darwin9.6"
- %"struct..0$_58" = type { i32, %"struct.llvm::MachineOperand"**, %"struct.llvm::MachineOperand"* }
- %"struct..1$_60" = type { i32 }
- %"struct..3$_53" = type { i64 }
- %struct.__false_type = type <{ i8 }>
- %"struct.llvm::APFloat" = type { %"struct.llvm::fltSemantics"*, %"struct..3$_53", i16, i16 }
- %"struct.llvm::AbstractTypeUser" = type { i32 (...)** }
- %"struct.llvm::AnalysisResolver" = type { %"struct.std::vector<std::pair<const llvm::PassInfo*, llvm::Pass*>,std::allocator<std::pair<const llvm::PassInfo*, llvm::Pass*> > >", %"struct.llvm::PMDataManager"* }
- %"struct.llvm::Annotable" = type { %"struct.llvm::Annotation"* }
- %"struct.llvm::Annotation" = type { i32 (...)**, %"struct..1$_60", %"struct.llvm::Annotation"* }
- %"struct.llvm::Argument" = type { %"struct.llvm::Value", %"struct.llvm::ilist_node<llvm::Argument>", %"struct.llvm::Function"* }
- %"struct.llvm::AttrListPtr" = type { %"struct.llvm::AttributeListImpl"* }
- %"struct.llvm::AttributeListImpl" = type opaque
- %"struct.llvm::BasicBlock" = type { %"struct.llvm::Value", %"struct.llvm::ilist_node<llvm::BasicBlock>", %"struct.llvm::iplist<llvm::Instruction,llvm::ilist_traits<llvm::Instruction> >", %"struct.llvm::Function"* }
- %"struct.llvm::BitVector" = type { i32*, i32, i32 }
- %"struct.llvm::BumpPtrAllocator" = type { i8* }
- %"struct.llvm::CalleeSavedInfo" = type { i32, %"struct.llvm::TargetRegisterClass"*, i32 }
- %"struct.llvm::CondCodeSDNode" = type { %"struct.llvm::SDNode", i32 }
- %"struct.llvm::Constant" = type { %"struct.llvm::User" }
- %"struct.llvm::DebugLocTracker" = type { %"struct.std::vector<llvm::DebugLocTuple,std::allocator<llvm::DebugLocTuple> >", %"struct.llvm::DenseMap<llvm::DebugLocTuple,unsigned int,llvm::DenseMapInfo<llvm::DebugLocTuple>,llvm::DenseMapInfo<unsigned int> >" }
- %"struct.llvm::DebugLocTuple" = type { i32, i32, i32 }
- %"struct.llvm::DenseMap<llvm::DebugLocTuple,unsigned int,llvm::DenseMapInfo<llvm::DebugLocTuple>,llvm::DenseMapInfo<unsigned int> >" = type { i32, %"struct.std::pair<llvm::DebugLocTuple,unsigned int>"*, i32, i32 }
- %"struct.llvm::DwarfWriter" = type opaque
- %"struct.llvm::FoldingSet<llvm::SDNode>" = type { %"struct.llvm::FoldingSetImpl" }
- %"struct.llvm::FoldingSetImpl" = type { i32 (...)**, i8**, i32, i32 }
- %"struct.llvm::Function" = type { %"struct.llvm::GlobalValue", %"struct.llvm::Annotable", %"struct.llvm::ilist_node<llvm::Function>", %"struct.llvm::iplist<llvm::BasicBlock,llvm::ilist_traits<llvm::BasicBlock> >", %"struct.llvm::iplist<llvm::Argument,llvm::ilist_traits<llvm::Argument> >", %"struct.llvm::ValueSymbolTable"*, %"struct.llvm::AttrListPtr" }
- %"struct.llvm::FunctionLoweringInfo" = type opaque
- %"struct.llvm::GlobalAddressSDNode" = type { %"struct.llvm::SDNode", %"struct.llvm::GlobalValue"*, i64 }
- %"struct.llvm::GlobalValue" = type { %"struct.llvm::Constant", %"struct.llvm::Module"*, i32, %"struct.std::string" }
- %"struct.llvm::GlobalVariable" = type { %"struct.llvm::GlobalValue", %"struct.llvm::ilist_node<llvm::GlobalVariable>", i8 }
- %"struct.llvm::ImmutablePass" = type { %"struct.llvm::ModulePass" }
- %"struct.llvm::Instruction" = type { %"struct.llvm::User", %"struct.llvm::ilist_node<llvm::Instruction>", %"struct.llvm::BasicBlock"* }
- %"struct.llvm::LandingPadInfo" = type <{ %"struct.llvm::MachineBasicBlock"*, [12 x i8], %"struct.llvm::SmallVector<unsigned int,1u>", %"struct.llvm::SmallVector<unsigned int,1u>", i32, %"struct.llvm::Function"*, %"struct.std::vector<int,std::allocator<int> >", [3 x i32] }>
- %"struct.llvm::MVT" = type { %"struct..1$_60" }
- %"struct.llvm::MachineBasicBlock" = type { %"struct.llvm::ilist_node<llvm::MachineBasicBlock>", %"struct.llvm::ilist<llvm::MachineInstr>", %"struct.llvm::BasicBlock"*, i32, %"struct.llvm::MachineFunction"*, %"struct.std::vector<llvm::MachineBasicBlock*,std::allocator<llvm::MachineBasicBlock*> >", %"struct.std::vector<llvm::MachineBasicBlock*,std::allocator<llvm::MachineBasicBlock*> >", %"struct.std::vector<int,std::allocator<int> >", i32, i8 }
- %"struct.llvm::MachineConstantPool" = type opaque
- %"struct.llvm::MachineFrameInfo" = type { %"struct.std::vector<llvm::MachineFrameInfo::StackObject,std::allocator<llvm::MachineFrameInfo::StackObject> >", i32, i8, i8, i64, i32, i32, i8, i32, i32, %"struct.std::vector<llvm::CalleeSavedInfo,std::allocator<llvm::CalleeSavedInfo> >", %"struct.llvm::MachineModuleInfo"*, %"struct.llvm::TargetFrameInfo"* }
- %"struct.llvm::MachineFrameInfo::StackObject" = type { i64, i32, i8, i64 }
- %"struct.llvm::MachineFunction" = type { %"struct.llvm::Annotation", %"struct.llvm::Function"*, %"struct.llvm::TargetMachine"*, %"struct.llvm::MachineRegisterInfo"*, %"struct.llvm::AbstractTypeUser"*, %"struct.llvm::MachineFrameInfo"*, %"struct.llvm::MachineConstantPool"*, %"struct.llvm::MachineJumpTableInfo"*, %"struct.std::vector<llvm::MachineBasicBlock*,std::allocator<llvm::MachineBasicBlock*> >", %"struct.llvm::BumpPtrAllocator", %"struct.llvm::Recycler<llvm::MachineBasicBlock,116ul,4ul>", %"struct.llvm::Recycler<llvm::MachineBasicBlock,116ul,4ul>", %"struct.llvm::ilist<llvm::MachineBasicBlock>", %"struct.llvm::DebugLocTracker" }
- %"struct.llvm::MachineInstr" = type { %"struct.llvm::ilist_node<llvm::MachineInstr>", %"struct.llvm::TargetInstrDesc"*, i16, %"struct.std::vector<llvm::MachineOperand,std::allocator<llvm::MachineOperand> >", %"struct.std::list<llvm::MachineMemOperand,std::allocator<llvm::MachineMemOperand> >", %"struct.llvm::MachineBasicBlock"*, %"struct..1$_60" }
- %"struct.llvm::MachineJumpTableInfo" = type opaque
- %"struct.llvm::MachineLocation" = type { i8, i32, i32 }
- %"struct.llvm::MachineModuleInfo" = type { %"struct.llvm::ImmutablePass", %"struct.std::vector<int,std::allocator<int> >", %"struct.std::vector<llvm::MachineMove,std::allocator<llvm::MachineMove> >", %"struct.std::vector<llvm::LandingPadInfo,std::allocator<llvm::LandingPadInfo> >", %"struct.std::vector<llvm::GlobalVariable*,std::allocator<llvm::GlobalVariable*> >", %"struct.std::vector<int,std::allocator<int> >", %"struct.std::vector<int,std::allocator<int> >", %"struct.std::vector<llvm::Function*,std::allocator<llvm::Function*> >", %"struct.llvm::SmallPtrSet<const llvm::Function*,32u>", i8, i8, i8 }
- %"struct.llvm::MachineMove" = type { i32, %"struct.llvm::MachineLocation", %"struct.llvm::MachineLocation" }
- %"struct.llvm::MachineOperand" = type { i8, i8, i8, %"struct.llvm::MachineInstr"*, %"struct.llvm::MachineOperand::$_57" }
- %"struct.llvm::MachineOperand::$_57" = type { %"struct..0$_58" }
- %"struct.llvm::MachineRegisterInfo" = type { %"struct.std::vector<std::pair<const llvm::TargetRegisterClass*, llvm::MachineOperand*>,std::allocator<std::pair<const llvm::TargetRegisterClass*, llvm::MachineOperand*> > >", %"struct.std::vector<std::vector<unsigned int, std::allocator<unsigned int> >,std::allocator<std::vector<unsigned int, std::allocator<unsigned int> > > >", %"struct.llvm::MachineOperand"**, %"struct.llvm::BitVector", %"struct.std::vector<std::pair<unsigned int, unsigned int>,std::allocator<std::pair<unsigned int, unsigned int> > >", %"struct.std::vector<int,std::allocator<int> >" }
- %"struct.llvm::Module" = type opaque
- %"struct.llvm::ModulePass" = type { %"struct.llvm::Pass" }
- %"struct.llvm::PATypeHandle" = type { %"struct.llvm::Type"*, %"struct.llvm::AbstractTypeUser"* }
- %"struct.llvm::PATypeHolder" = type { %"struct.llvm::Type"* }
- %"struct.llvm::PMDataManager" = type opaque
- %"struct.llvm::Pass" = type { i32 (...)**, %"struct.llvm::AnalysisResolver"*, i32, %"struct.std::vector<std::pair<const llvm::PassInfo*, llvm::Pass*>,std::allocator<std::pair<const llvm::PassInfo*, llvm::Pass*> > >" }
- %"struct.llvm::PassInfo" = type { i8*, i8*, i32, i8, i8, i8, %"struct.std::vector<const llvm::PassInfo*,std::allocator<const llvm::PassInfo*> >", %"struct.llvm::Pass"* ()* }
- %"struct.llvm::Recycler<llvm::MachineBasicBlock,116ul,4ul>" = type { %"struct.llvm::iplist<llvm::RecyclerStruct,llvm::ilist_traits<llvm::RecyclerStruct> >" }
- %"struct.llvm::RecyclerStruct" = type { %"struct.llvm::RecyclerStruct"*, %"struct.llvm::RecyclerStruct"* }
- %"struct.llvm::RecyclingAllocator<llvm::BumpPtrAllocator,llvm::SDNode,132ul,4ul>" = type { %"struct.llvm::Recycler<llvm::MachineBasicBlock,116ul,4ul>", %"struct.llvm::BumpPtrAllocator" }
- %"struct.llvm::SDNode" = type { %"struct.llvm::BumpPtrAllocator", %"struct.llvm::ilist_node<llvm::SDNode>", i16, i16, i32, %"struct.llvm::SDUse"*, %"struct.llvm::MVT"*, %"struct.llvm::SDUse"*, i16, i16, %"struct..1$_60" }
- %"struct.llvm::SDUse" = type { %"struct.llvm::SDValue", %"struct.llvm::SDNode"*, %"struct.llvm::SDUse"**, %"struct.llvm::SDUse"* }
- %"struct.llvm::SDVTList" = type { %"struct.llvm::MVT"*, i16 }
- %"struct.llvm::SDValue" = type { %"struct.llvm::SDNode"*, i32 }
- %"struct.llvm::SelectionDAG" = type { %"struct.llvm::TargetLowering"*, %"struct.llvm::MachineFunction"*, %"struct.llvm::FunctionLoweringInfo"*, %"struct.llvm::MachineModuleInfo"*, %"struct.llvm::DwarfWriter"*, %"struct.llvm::SDNode", %"struct.llvm::SDValue", %"struct.llvm::ilist<llvm::SDNode>", %"struct.llvm::RecyclingAllocator<llvm::BumpPtrAllocator,llvm::SDNode,132ul,4ul>", %"struct.llvm::FoldingSet<llvm::SDNode>", %"struct.llvm::BumpPtrAllocator", %"struct.llvm::BumpPtrAllocator", %"struct.std::map<const llvm::SDNode*,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<const llvm::SDNode*>,std::allocator<std::pair<const llvm::SDNode* const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >", %"struct.std::vector<llvm::SDVTList,std::allocator<llvm::SDVTList> >", %"struct.std::vector<llvm::CondCodeSDNode*,std::allocator<llvm::CondCodeSDNode*> >", %"struct.std::vector<llvm::SDNode*,std::allocator<llvm::SDNode*> >", %"struct.std::map<const llvm::SDNode*,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<const llvm::SDNode*>,std::allocator<std::pair<const llvm::SDNode* const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >", %"struct.llvm::StringMap<llvm::SDNode*,llvm::MallocAllocator>", %"struct.llvm::StringMap<llvm::SDNode*,llvm::MallocAllocator>" }
- %"struct.llvm::SmallPtrSet<const llvm::Function*,32u>" = type { %"struct.llvm::SmallPtrSetImpl", [32 x i8*] }
- %"struct.llvm::SmallPtrSetImpl" = type { i8**, i32, i32, i32, [1 x i8*] }
- %"struct.llvm::SmallVector<llvm::SDValue,16u>" = type <{ [17 x i8], [127 x i8] }>
- %"struct.llvm::SmallVector<unsigned int,1u>" = type <{ [17 x i8], [3 x i8], [3 x i32] }>
- %"struct.llvm::StringMap<llvm::SDNode*,llvm::MallocAllocator>" = type { %"struct.llvm::StringMapImpl", %struct.__false_type }
- %"struct.llvm::StringMapImpl" = type { %"struct.llvm::StringMapImpl::ItemBucket"*, i32, i32, i32, i32 }
- %"struct.llvm::StringMapImpl::ItemBucket" = type { i32, %"struct..1$_60"* }
- %"struct.llvm::TargetAsmInfo" = type opaque
- %"struct.llvm::TargetData" = type <{ %"struct.llvm::ImmutablePass", i8, i8, i8, i8, [4 x i8], %"struct.llvm::SmallVector<llvm::SDValue,16u>" }>
- %"struct.llvm::TargetFrameInfo" = type { i32 (...)**, i32, i32, i32 }
- %"struct.llvm::TargetInstrDesc" = type { i16, i16, i16, i16, i8*, i32, i32, i32*, i32*, %"struct.llvm::TargetRegisterClass"**, %"struct.llvm::TargetOperandInfo"* }
- %"struct.llvm::TargetLowering" = type { i32 (...)**, %"struct.llvm::TargetMachine"*, %"struct.llvm::TargetData"*, %"struct.llvm::MVT", i8, i8, i8, i8, i8, i8, i8, %"struct.llvm::MVT", i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [30 x %"struct.llvm::TargetRegisterClass"*], [30 x i8], [30 x %"struct.llvm::MVT"], [30 x %"struct.llvm::MVT"], [179 x i64], [4 x i64], [30 x i64], [2 x [5 x i64]], [30 x i64], [24 x i64], %"struct.llvm::TargetLowering::ValueTypeActionImpl", %"struct.std::vector<llvm::APFloat,std::allocator<llvm::APFloat> >", %"struct.std::vector<std::pair<llvm::MVT, llvm::TargetRegisterClass*>,std::allocator<std::pair<llvm::MVT, llvm::TargetRegisterClass*> > >", [23 x i8], %"struct.std::map<const llvm::SDNode*,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<const llvm::SDNode*>,std::allocator<std::pair<const llvm::SDNode* const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >", [180 x i8*], [180 x i32], i32, i32, i32, i8 }
- %"struct.llvm::TargetLowering::ValueTypeActionImpl" = type { [2 x i32] }
- %"struct.llvm::TargetMachine" = type { i32 (...)**, %"struct.llvm::TargetAsmInfo"* }
- %"struct.llvm::TargetOperandInfo" = type { i16, i16, i32 }
- %"struct.llvm::TargetRegisterClass" = type { i32 (...)**, i32, i8, %"struct.llvm::MVT"*, %"struct.llvm::TargetRegisterClass"**, %"struct.llvm::TargetRegisterClass"**, i32, i32, i32, i32*, i32* }
- %"struct.llvm::Type" = type { %"struct.llvm::AbstractTypeUser", i8, [3 x i8], i32, %"struct.llvm::Type"*, %"struct.std::vector<llvm::AbstractTypeUser*,std::allocator<llvm::AbstractTypeUser*> >", i32, %"struct.llvm::PATypeHandle"* }
- %"struct.llvm::Use" = type { %"struct.llvm::Value"*, %"struct.llvm::Use"*, %"struct..1$_60" }
- %"struct.llvm::User" = type { %"struct.llvm::Value", %"struct.llvm::Use"*, i32 }
- %"struct.llvm::Value" = type { i32 (...)**, i16, i16, %"struct.llvm::PATypeHolder", %"struct.llvm::Use"*, %"struct.llvm::ValueName"* }
- %"struct.llvm::ValueName" = type opaque
- %"struct.llvm::ValueSymbolTable" = type opaque
- %"struct.llvm::fltSemantics" = type opaque
- %"struct.llvm::ilist<llvm::MachineBasicBlock>" = type { %"struct.llvm::iplist<llvm::MachineBasicBlock,llvm::ilist_traits<llvm::MachineBasicBlock> >" }
- %"struct.llvm::ilist<llvm::MachineInstr>" = type { %"struct.llvm::iplist<llvm::MachineInstr,llvm::ilist_traits<llvm::MachineInstr> >" }
- %"struct.llvm::ilist<llvm::SDNode>" = type { %"struct.llvm::iplist<llvm::SDNode,llvm::ilist_traits<llvm::SDNode> >" }
- %"struct.llvm::ilist_node<llvm::Argument>" = type { %"struct.llvm::Argument"*, %"struct.llvm::Argument"* }
- %"struct.llvm::ilist_node<llvm::BasicBlock>" = type { %"struct.llvm::BasicBlock"*, %"struct.llvm::BasicBlock"* }
- %"struct.llvm::ilist_node<llvm::Function>" = type { %"struct.llvm::Function"*, %"struct.llvm::Function"* }
- %"struct.llvm::ilist_node<llvm::GlobalVariable>" = type { %"struct.llvm::GlobalVariable"*, %"struct.llvm::GlobalVariable"* }
- %"struct.llvm::ilist_node<llvm::Instruction>" = type { %"struct.llvm::Instruction"*, %"struct.llvm::Instruction"* }
- %"struct.llvm::ilist_node<llvm::MachineBasicBlock>" = type { %"struct.llvm::MachineBasicBlock"*, %"struct.llvm::MachineBasicBlock"* }
- %"struct.llvm::ilist_node<llvm::MachineInstr>" = type { %"struct.llvm::MachineInstr"*, %"struct.llvm::MachineInstr"* }
- %"struct.llvm::ilist_node<llvm::SDNode>" = type { %"struct.llvm::SDNode"*, %"struct.llvm::SDNode"* }
- %"struct.llvm::ilist_traits<llvm::MachineBasicBlock>" = type { %"struct.llvm::MachineBasicBlock" }
- %"struct.llvm::ilist_traits<llvm::MachineInstr>" = type { %"struct.llvm::MachineInstr", %"struct.llvm::MachineBasicBlock"* }
- %"struct.llvm::ilist_traits<llvm::RecyclerStruct>" = type { %"struct.llvm::RecyclerStruct" }
- %"struct.llvm::ilist_traits<llvm::SDNode>" = type { %"struct.llvm::SDNode" }
- %"struct.llvm::iplist<llvm::Argument,llvm::ilist_traits<llvm::Argument> >" = type { %"struct.llvm::Argument"* }
- %"struct.llvm::iplist<llvm::BasicBlock,llvm::ilist_traits<llvm::BasicBlock> >" = type { %"struct.llvm::BasicBlock"* }
- %"struct.llvm::iplist<llvm::Instruction,llvm::ilist_traits<llvm::Instruction> >" = type { %"struct.llvm::Instruction"* }
- %"struct.llvm::iplist<llvm::MachineBasicBlock,llvm::ilist_traits<llvm::MachineBasicBlock> >" = type { %"struct.llvm::ilist_traits<llvm::MachineBasicBlock>", %"struct.llvm::MachineBasicBlock"* }
- %"struct.llvm::iplist<llvm::MachineInstr,llvm::ilist_traits<llvm::MachineInstr> >" = type { %"struct.llvm::ilist_traits<llvm::MachineInstr>", %"struct.llvm::MachineInstr"* }
- %"struct.llvm::iplist<llvm::RecyclerStruct,llvm::ilist_traits<llvm::RecyclerStruct> >" = type { %"struct.llvm::ilist_traits<llvm::RecyclerStruct>", %"struct.llvm::RecyclerStruct"* }
- %"struct.llvm::iplist<llvm::SDNode,llvm::ilist_traits<llvm::SDNode> >" = type { %"struct.llvm::ilist_traits<llvm::SDNode>", %"struct.llvm::SDNode"* }
- %"struct.std::_List_base<llvm::MachineMemOperand,std::allocator<llvm::MachineMemOperand> >" = type { %"struct.llvm::ilist_traits<llvm::RecyclerStruct>" }
- %"struct.std::_Rb_tree<const llvm::SDNode*,std::pair<const llvm::SDNode* const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >,std::_Select1st<std::pair<const llvm::SDNode* const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >,std::less<const llvm::SDNode*>,std::allocator<std::pair<const llvm::SDNode* const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >" = type { %"struct.std::_Rb_tree<const llvm::SDNode*,std::pair<const llvm::SDNode* const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >,std::_Select1st<std::pair<const llvm::SDNode* const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >,std::less<const llvm::SDNode*>,std::allocator<std::pair<const llvm::SDNode* const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_Rb_tree_impl<std::less<const llvm::SDNode*>,false>" }
- %"struct.std::_Rb_tree<const llvm::SDNode*,std::pair<const llvm::SDNode* const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >,std::_Select1st<std::pair<const llvm::SDNode* const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >,std::less<const llvm::SDNode*>,std::allocator<std::pair<const llvm::SDNode* const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_Rb_tree_impl<std::less<const llvm::SDNode*>,false>" = type { %struct.__false_type, %"struct.std::_Rb_tree_node_base", i32 }
- %"struct.std::_Rb_tree_node_base" = type { i32, %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }
- %"struct.std::_Vector_base<const llvm::PassInfo*,std::allocator<const llvm::PassInfo*> >" = type { %"struct.std::_Vector_base<const llvm::PassInfo*,std::allocator<const llvm::PassInfo*> >::_Vector_impl" }
- %"struct.std::_Vector_base<const llvm::PassInfo*,std::allocator<const llvm::PassInfo*> >::_Vector_impl" = type { %"struct.llvm::PassInfo"**, %"struct.llvm::PassInfo"**, %"struct.llvm::PassInfo"** }
- %"struct.std::_Vector_base<int,std::allocator<int> >" = type { %"struct.std::_Vector_base<int,std::allocator<int> >::_Vector_impl" }
- %"struct.std::_Vector_base<int,std::allocator<int> >::_Vector_impl" = type { i32*, i32*, i32* }
- %"struct.std::_Vector_base<llvm::APFloat,std::allocator<llvm::APFloat> >" = type { %"struct.std::_Vector_base<llvm::APFloat,std::allocator<llvm::APFloat> >::_Vector_impl" }
- %"struct.std::_Vector_base<llvm::APFloat,std::allocator<llvm::APFloat> >::_Vector_impl" = type { %"struct.llvm::APFloat"*, %"struct.llvm::APFloat"*, %"struct.llvm::APFloat"* }
- %"struct.std::_Vector_base<llvm::AbstractTypeUser*,std::allocator<llvm::AbstractTypeUser*> >" = type { %"struct.std::_Vector_base<llvm::AbstractTypeUser*,std::allocator<llvm::AbstractTypeUser*> >::_Vector_impl" }
- %"struct.std::_Vector_base<llvm::AbstractTypeUser*,std::allocator<llvm::AbstractTypeUser*> >::_Vector_impl" = type { %"struct.llvm::AbstractTypeUser"**, %"struct.llvm::AbstractTypeUser"**, %"struct.llvm::AbstractTypeUser"** }
- %"struct.std::_Vector_base<llvm::CalleeSavedInfo,std::allocator<llvm::CalleeSavedInfo> >" = type { %"struct.std::_Vector_base<llvm::CalleeSavedInfo,std::allocator<llvm::CalleeSavedInfo> >::_Vector_impl" }
- %"struct.std::_Vector_base<llvm::CalleeSavedInfo,std::allocator<llvm::CalleeSavedInfo> >::_Vector_impl" = type { %"struct.llvm::CalleeSavedInfo"*, %"struct.llvm::CalleeSavedInfo"*, %"struct.llvm::CalleeSavedInfo"* }
- %"struct.std::_Vector_base<llvm::CondCodeSDNode*,std::allocator<llvm::CondCodeSDNode*> >" = type { %"struct.std::_Vector_base<llvm::CondCodeSDNode*,std::allocator<llvm::CondCodeSDNode*> >::_Vector_impl" }
- %"struct.std::_Vector_base<llvm::CondCodeSDNode*,std::allocator<llvm::CondCodeSDNode*> >::_Vector_impl" = type { %"struct.llvm::CondCodeSDNode"**, %"struct.llvm::CondCodeSDNode"**, %"struct.llvm::CondCodeSDNode"** }
- %"struct.std::_Vector_base<llvm::DebugLocTuple,std::allocator<llvm::DebugLocTuple> >" = type { %"struct.std::_Vector_base<llvm::DebugLocTuple,std::allocator<llvm::DebugLocTuple> >::_Vector_impl" }
- %"struct.std::_Vector_base<llvm::DebugLocTuple,std::allocator<llvm::DebugLocTuple> >::_Vector_impl" = type { %"struct.llvm::DebugLocTuple"*, %"struct.llvm::DebugLocTuple"*, %"struct.llvm::DebugLocTuple"* }
- %"struct.std::_Vector_base<llvm::Function*,std::allocator<llvm::Function*> >" = type { %"struct.std::_Vector_base<llvm::Function*,std::allocator<llvm::Function*> >::_Vector_impl" }
- %"struct.std::_Vector_base<llvm::Function*,std::allocator<llvm::Function*> >::_Vector_impl" = type { %"struct.llvm::Function"**, %"struct.llvm::Function"**, %"struct.llvm::Function"** }
- %"struct.std::_Vector_base<llvm::GlobalVariable*,std::allocator<llvm::GlobalVariable*> >" = type { %"struct.std::_Vector_base<llvm::GlobalVariable*,std::allocator<llvm::GlobalVariable*> >::_Vector_impl" }
- %"struct.std::_Vector_base<llvm::GlobalVariable*,std::allocator<llvm::GlobalVariable*> >::_Vector_impl" = type { %"struct.llvm::GlobalVariable"**, %"struct.llvm::GlobalVariable"**, %"struct.llvm::GlobalVariable"** }
- %"struct.std::_Vector_base<llvm::LandingPadInfo,std::allocator<llvm::LandingPadInfo> >" = type { %"struct.std::_Vector_base<llvm::LandingPadInfo,std::allocator<llvm::LandingPadInfo> >::_Vector_impl" }
- %"struct.std::_Vector_base<llvm::LandingPadInfo,std::allocator<llvm::LandingPadInfo> >::_Vector_impl" = type { %"struct.llvm::LandingPadInfo"*, %"struct.llvm::LandingPadInfo"*, %"struct.llvm::LandingPadInfo"* }
- %"struct.std::_Vector_base<llvm::MachineBasicBlock*,std::allocator<llvm::MachineBasicBlock*> >" = type { %"struct.std::_Vector_base<llvm::MachineBasicBlock*,std::allocator<llvm::MachineBasicBlock*> >::_Vector_impl" }
- %"struct.std::_Vector_base<llvm::MachineBasicBlock*,std::allocator<llvm::MachineBasicBlock*> >::_Vector_impl" = type { %"struct.llvm::MachineBasicBlock"**, %"struct.llvm::MachineBasicBlock"**, %"struct.llvm::MachineBasicBlock"** }
- %"struct.std::_Vector_base<llvm::MachineFrameInfo::StackObject,std::allocator<llvm::MachineFrameInfo::StackObject> >" = type { %"struct.std::_Vector_base<llvm::MachineFrameInfo::StackObject,std::allocator<llvm::MachineFrameInfo::StackObject> >::_Vector_impl" }
- %"struct.std::_Vector_base<llvm::MachineFrameInfo::StackObject,std::allocator<llvm::MachineFrameInfo::StackObject> >::_Vector_impl" = type { %"struct.llvm::MachineFrameInfo::StackObject"*, %"struct.llvm::MachineFrameInfo::StackObject"*, %"struct.llvm::MachineFrameInfo::StackObject"* }
- %"struct.std::_Vector_base<llvm::MachineMove,std::allocator<llvm::MachineMove> >" = type { %"struct.std::_Vector_base<llvm::MachineMove,std::allocator<llvm::MachineMove> >::_Vector_impl" }
- %"struct.std::_Vector_base<llvm::MachineMove,std::allocator<llvm::MachineMove> >::_Vector_impl" = type { %"struct.llvm::MachineMove"*, %"struct.llvm::MachineMove"*, %"struct.llvm::MachineMove"* }
- %"struct.std::_Vector_base<llvm::MachineOperand,std::allocator<llvm::MachineOperand> >" = type { %"struct.std::_Vector_base<llvm::MachineOperand,std::allocator<llvm::MachineOperand> >::_Vector_impl" }
- %"struct.std::_Vector_base<llvm::MachineOperand,std::allocator<llvm::MachineOperand> >::_Vector_impl" = type { %"struct.llvm::MachineOperand"*, %"struct.llvm::MachineOperand"*, %"struct.llvm::MachineOperand"* }
- %"struct.std::_Vector_base<llvm::SDNode*,std::allocator<llvm::SDNode*> >" = type { %"struct.std::_Vector_base<llvm::SDNode*,std::allocator<llvm::SDNode*> >::_Vector_impl" }
- %"struct.std::_Vector_base<llvm::SDNode*,std::allocator<llvm::SDNode*> >::_Vector_impl" = type { %"struct.llvm::SDNode"**, %"struct.llvm::SDNode"**, %"struct.llvm::SDNode"** }
- %"struct.std::_Vector_base<llvm::SDVTList,std::allocator<llvm::SDVTList> >" = type { %"struct.std::_Vector_base<llvm::SDVTList,std::allocator<llvm::SDVTList> >::_Vector_impl" }
- %"struct.std::_Vector_base<llvm::SDVTList,std::allocator<llvm::SDVTList> >::_Vector_impl" = type { %"struct.llvm::SDVTList"*, %"struct.llvm::SDVTList"*, %"struct.llvm::SDVTList"* }
- %"struct.std::_Vector_base<std::pair<const llvm::PassInfo*, llvm::Pass*>,std::allocator<std::pair<const llvm::PassInfo*, llvm::Pass*> > >" = type { %"struct.std::_Vector_base<std::pair<const llvm::PassInfo*, llvm::Pass*>,std::allocator<std::pair<const llvm::PassInfo*, llvm::Pass*> > >::_Vector_impl" }
- %"struct.std::_Vector_base<std::pair<const llvm::PassInfo*, llvm::Pass*>,std::allocator<std::pair<const llvm::PassInfo*, llvm::Pass*> > >::_Vector_impl" = type { %"struct.std::pair<const llvm::PassInfo*,llvm::Pass*>"*, %"struct.std::pair<const llvm::PassInfo*,llvm::Pass*>"*, %"struct.std::pair<const llvm::PassInfo*,llvm::Pass*>"* }
- %"struct.std::_Vector_base<std::pair<const llvm::TargetRegisterClass*, llvm::MachineOperand*>,std::allocator<std::pair<const llvm::TargetRegisterClass*, llvm::MachineOperand*> > >" = type { %"struct.std::_Vector_base<std::pair<const llvm::TargetRegisterClass*, llvm::MachineOperand*>,std::allocator<std::pair<const llvm::TargetRegisterClass*, llvm::MachineOperand*> > >::_Vector_impl" }
- %"struct.std::_Vector_base<std::pair<const llvm::TargetRegisterClass*, llvm::MachineOperand*>,std::allocator<std::pair<const llvm::TargetRegisterClass*, llvm::MachineOperand*> > >::_Vector_impl" = type { %"struct.std::pair<const llvm::TargetRegisterClass*,llvm::MachineOperand*>"*, %"struct.std::pair<const llvm::TargetRegisterClass*,llvm::MachineOperand*>"*, %"struct.std::pair<const llvm::TargetRegisterClass*,llvm::MachineOperand*>"* }
- %"struct.std::_Vector_base<std::pair<llvm::MVT, llvm::TargetRegisterClass*>,std::allocator<std::pair<llvm::MVT, llvm::TargetRegisterClass*> > >" = type { %"struct.std::_Vector_base<std::pair<llvm::MVT, llvm::TargetRegisterClass*>,std::allocator<std::pair<llvm::MVT, llvm::TargetRegisterClass*> > >::_Vector_impl" }
- %"struct.std::_Vector_base<std::pair<llvm::MVT, llvm::TargetRegisterClass*>,std::allocator<std::pair<llvm::MVT, llvm::TargetRegisterClass*> > >::_Vector_impl" = type { %"struct.std::pair<llvm::MVT,llvm::TargetRegisterClass*>"*, %"struct.std::pair<llvm::MVT,llvm::TargetRegisterClass*>"*, %"struct.std::pair<llvm::MVT,llvm::TargetRegisterClass*>"* }
- %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>,std::allocator<std::pair<unsigned int, unsigned int> > >" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>,std::allocator<std::pair<unsigned int, unsigned int> > >::_Vector_impl" }
- %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>,std::allocator<std::pair<unsigned int, unsigned int> > >::_Vector_impl" = type { %"struct.std::pair<int,int>"*, %"struct.std::pair<int,int>"*, %"struct.std::pair<int,int>"* }
- %"struct.std::_Vector_base<std::vector<unsigned int, std::allocator<unsigned int> >,std::allocator<std::vector<unsigned int, std::allocator<unsigned int> > > >" = type { %"struct.std::_Vector_base<std::vector<unsigned int, std::allocator<unsigned int> >,std::allocator<std::vector<unsigned int, std::allocator<unsigned int> > > >::_Vector_impl" }
- %"struct.std::_Vector_base<std::vector<unsigned int, std::allocator<unsigned int> >,std::allocator<std::vector<unsigned int, std::allocator<unsigned int> > > >::_Vector_impl" = type { %"struct.std::vector<int,std::allocator<int> >"*, %"struct.std::vector<int,std::allocator<int> >"*, %"struct.std::vector<int,std::allocator<int> >"* }
- %"struct.std::list<llvm::MachineMemOperand,std::allocator<llvm::MachineMemOperand> >" = type { %"struct.std::_List_base<llvm::MachineMemOperand,std::allocator<llvm::MachineMemOperand> >" }
- %"struct.std::map<const llvm::SDNode*,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<const llvm::SDNode*>,std::allocator<std::pair<const llvm::SDNode* const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >" = type { %"struct.std::_Rb_tree<const llvm::SDNode*,std::pair<const llvm::SDNode* const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >,std::_Select1st<std::pair<const llvm::SDNode* const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >,std::less<const llvm::SDNode*>,std::allocator<std::pair<const llvm::SDNode* const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >" }
- %"struct.std::pair<const llvm::PassInfo*,llvm::Pass*>" = type { %"struct.llvm::PassInfo"*, %"struct.llvm::Pass"* }
- %"struct.std::pair<const llvm::TargetRegisterClass*,llvm::MachineOperand*>" = type { %"struct.llvm::TargetRegisterClass"*, %"struct.llvm::MachineOperand"* }
- %"struct.std::pair<int,int>" = type { i32, i32 }
- %"struct.std::pair<llvm::DebugLocTuple,unsigned int>" = type { %"struct.llvm::DebugLocTuple", i32 }
- %"struct.std::pair<llvm::MVT,llvm::TargetRegisterClass*>" = type { %"struct.llvm::MVT", %"struct.llvm::TargetRegisterClass"* }
- %"struct.std::string" = type { %"struct.llvm::BumpPtrAllocator" }
- %"struct.std::vector<const llvm::PassInfo*,std::allocator<const llvm::PassInfo*> >" = type { %"struct.std::_Vector_base<const llvm::PassInfo*,std::allocator<const llvm::PassInfo*> >" }
- %"struct.std::vector<int,std::allocator<int> >" = type { %"struct.std::_Vector_base<int,std::allocator<int> >" }
- %"struct.std::vector<llvm::APFloat,std::allocator<llvm::APFloat> >" = type { %"struct.std::_Vector_base<llvm::APFloat,std::allocator<llvm::APFloat> >" }
- %"struct.std::vector<llvm::AbstractTypeUser*,std::allocator<llvm::AbstractTypeUser*> >" = type { %"struct.std::_Vector_base<llvm::AbstractTypeUser*,std::allocator<llvm::AbstractTypeUser*> >" }
- %"struct.std::vector<llvm::CalleeSavedInfo,std::allocator<llvm::CalleeSavedInfo> >" = type { %"struct.std::_Vector_base<llvm::CalleeSavedInfo,std::allocator<llvm::CalleeSavedInfo> >" }
- %"struct.std::vector<llvm::CondCodeSDNode*,std::allocator<llvm::CondCodeSDNode*> >" = type { %"struct.std::_Vector_base<llvm::CondCodeSDNode*,std::allocator<llvm::CondCodeSDNode*> >" }
- %"struct.std::vector<llvm::DebugLocTuple,std::allocator<llvm::DebugLocTuple> >" = type { %"struct.std::_Vector_base<llvm::DebugLocTuple,std::allocator<llvm::DebugLocTuple> >" }
- %"struct.std::vector<llvm::Function*,std::allocator<llvm::Function*> >" = type { %"struct.std::_Vector_base<llvm::Function*,std::allocator<llvm::Function*> >" }
- %"struct.std::vector<llvm::GlobalVariable*,std::allocator<llvm::GlobalVariable*> >" = type { %"struct.std::_Vector_base<llvm::GlobalVariable*,std::allocator<llvm::GlobalVariable*> >" }
- %"struct.std::vector<llvm::LandingPadInfo,std::allocator<llvm::LandingPadInfo> >" = type { %"struct.std::_Vector_base<llvm::LandingPadInfo,std::allocator<llvm::LandingPadInfo> >" }
- %"struct.std::vector<llvm::MachineBasicBlock*,std::allocator<llvm::MachineBasicBlock*> >" = type { %"struct.std::_Vector_base<llvm::MachineBasicBlock*,std::allocator<llvm::MachineBasicBlock*> >" }
- %"struct.std::vector<llvm::MachineFrameInfo::StackObject,std::allocator<llvm::MachineFrameInfo::StackObject> >" = type { %"struct.std::_Vector_base<llvm::MachineFrameInfo::StackObject,std::allocator<llvm::MachineFrameInfo::StackObject> >" }
- %"struct.std::vector<llvm::MachineMove,std::allocator<llvm::MachineMove> >" = type { %"struct.std::_Vector_base<llvm::MachineMove,std::allocator<llvm::MachineMove> >" }
- %"struct.std::vector<llvm::MachineOperand,std::allocator<llvm::MachineOperand> >" = type { %"struct.std::_Vector_base<llvm::MachineOperand,std::allocator<llvm::MachineOperand> >" }
- %"struct.std::vector<llvm::SDNode*,std::allocator<llvm::SDNode*> >" = type { %"struct.std::_Vector_base<llvm::SDNode*,std::allocator<llvm::SDNode*> >" }
- %"struct.std::vector<llvm::SDVTList,std::allocator<llvm::SDVTList> >" = type { %"struct.std::_Vector_base<llvm::SDVTList,std::allocator<llvm::SDVTList> >" }
- %"struct.std::vector<std::pair<const llvm::PassInfo*, llvm::Pass*>,std::allocator<std::pair<const llvm::PassInfo*, llvm::Pass*> > >" = type { %"struct.std::_Vector_base<std::pair<const llvm::PassInfo*, llvm::Pass*>,std::allocator<std::pair<const llvm::PassInfo*, llvm::Pass*> > >" }
- %"struct.std::vector<std::pair<const llvm::TargetRegisterClass*, llvm::MachineOperand*>,std::allocator<std::pair<const llvm::TargetRegisterClass*, llvm::MachineOperand*> > >" = type { %"struct.std::_Vector_base<std::pair<const llvm::TargetRegisterClass*, llvm::MachineOperand*>,std::allocator<std::pair<const llvm::TargetRegisterClass*, llvm::MachineOperand*> > >" }
- %"struct.std::vector<std::pair<llvm::MVT, llvm::TargetRegisterClass*>,std::allocator<std::pair<llvm::MVT, llvm::TargetRegisterClass*> > >" = type { %"struct.std::_Vector_base<std::pair<llvm::MVT, llvm::TargetRegisterClass*>,std::allocator<std::pair<llvm::MVT, llvm::TargetRegisterClass*> > >" }
- %"struct.std::vector<std::pair<unsigned int, unsigned int>,std::allocator<std::pair<unsigned int, unsigned int> > >" = type { %"struct.std::_Vector_base<std::pair<unsigned int, unsigned int>,std::allocator<std::pair<unsigned int, unsigned int> > >" }
- %"struct.std::vector<std::vector<unsigned int, std::allocator<unsigned int> >,std::allocator<std::vector<unsigned int, std::allocator<unsigned int> > > >" = type { %"struct.std::_Vector_base<std::vector<unsigned int, std::allocator<unsigned int> >,std::allocator<std::vector<unsigned int, std::allocator<unsigned int> > > >" }
-@"\01LC81" = internal constant [65 x i8] c"/Users/echeng/LLVM/llvm/include/llvm/CodeGen/SelectionDAGNodes.h\00" ; <[65 x i8]*> [#uses=1]
-@_ZZNK4llvm6SDNode12getValueTypeEjE8__func__ = internal constant [13 x i8] c"getValueType\00" ; <[13 x i8]*> [#uses=1]
-@"\01LC83" = internal constant [46 x i8] c"ResNo < NumValues && \22Illegal result number!\22\00" ; <[46 x i8]*> [#uses=1]
-@"\01LC197" = internal constant [16 x i8] c"___tls_get_addr\00" ; <[16 x i8]*> [#uses=1]
-@llvm.used1 = appending global [1 x i8*] [ i8* bitcast (i64 (%"struct.llvm::GlobalAddressSDNode"*, %"struct.llvm::SelectionDAG"*, %"struct.llvm::MVT"*)* @_ZL31LowerToTLSGeneralDynamicModel32PN4llvm19GlobalAddressSDNodeERNS_12SelectionDAGENS_3MVTE to i8*) ], section "llvm.metadata" ; <[1 x i8*]*> [#uses=0]
-
-define fastcc i64 @_ZL31LowerToTLSGeneralDynamicModel32PN4llvm19GlobalAddressSDNodeERNS_12SelectionDAGENS_3MVTE(%"struct.llvm::GlobalAddressSDNode"* %GA, %"struct.llvm::SelectionDAG"* %DAG, %"struct.llvm::MVT"* byval align 4 %PtrVT) nounwind noinline {
-entry:
- %VT2.i185 = alloca %"struct.llvm::MVT", align 8 ; <%"struct.llvm::MVT"*> [#uses=2]
- %VT1.i186 = alloca %"struct.llvm::MVT", align 8 ; <%"struct.llvm::MVT"*> [#uses=2]
- %Ops.i187 = alloca [4 x %"struct.llvm::SDValue"], align 8 ; <[4 x %"struct.llvm::SDValue"]*> [#uses=9]
- %0 = alloca %"struct.llvm::MVT", align 8 ; <%"struct.llvm::MVT"*> [#uses=2]
- %VT182 = alloca %"struct.llvm::MVT", align 8 ; <%"struct.llvm::MVT"*> [#uses=2]
- %VT2.i173 = alloca %"struct.llvm::MVT", align 8 ; <%"struct.llvm::MVT"*> [#uses=2]
- %VT1.i174 = alloca %"struct.llvm::MVT", align 8 ; <%"struct.llvm::MVT"*> [#uses=2]
- %Ops.i175 = alloca [4 x %"struct.llvm::SDValue"], align 8 ; <[4 x %"struct.llvm::SDValue"]*> [#uses=9]
- %1 = alloca %"struct.llvm::MVT", align 8 ; <%"struct.llvm::MVT"*> [#uses=2]
- %VT3.i = alloca %"struct.llvm::MVT", align 8 ; <%"struct.llvm::MVT"*> [#uses=2]
- %VT2.i = alloca %"struct.llvm::MVT", align 8 ; <%"struct.llvm::MVT"*> [#uses=2]
- %VT1.i = alloca %"struct.llvm::MVT", align 8 ; <%"struct.llvm::MVT"*> [#uses=2]
- %Ops.i = alloca [3 x %"struct.llvm::SDValue"], align 8 ; <[3 x %"struct.llvm::SDValue"]*> [#uses=7]
- %VT = alloca %"struct.llvm::MVT", align 8 ; <%"struct.llvm::MVT"*> [#uses=2]
- %Ops1 = alloca [5 x %"struct.llvm::SDValue"], align 8 ; <[5 x %"struct.llvm::SDValue"]*> [#uses=11]
- %Ops = alloca [3 x %"struct.llvm::SDValue"], align 8 ; <[3 x %"struct.llvm::SDValue"]*> [#uses=7]
- %NodeTys = alloca %"struct.llvm::SDVTList", align 8 ; <%"struct.llvm::SDVTList"*> [#uses=4]
- %2 = alloca %"struct.llvm::MVT", align 8 ; <%"struct.llvm::MVT"*> [#uses=2]
- %3 = alloca %"struct.llvm::MVT", align 8 ; <%"struct.llvm::MVT"*> [#uses=2]
- %4 = alloca %"struct.llvm::MVT", align 8 ; <%"struct.llvm::MVT"*> [#uses=2]
- %5 = alloca %"struct.llvm::MVT", align 8 ; <%"struct.llvm::MVT"*> [#uses=2]
- %6 = getelementptr %"struct.llvm::GlobalAddressSDNode"* %GA, i32 0, i32 0, i32 10, i32 0 ; <i32*> [#uses=1]
- %7 = load i32* %6, align 4 ; <i32> [#uses=5]
- %8 = call i64 @_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_3MVTE(%"struct.llvm::SelectionDAG"* %DAG, i32 208, i32 0, %"struct.llvm::MVT"* byval align 4 %PtrVT) nounwind ; <i64> [#uses=2]
- %9 = trunc i64 %8 to i32 ; <i32> [#uses=1]
- %sroa.store.elt = lshr i64 %8, 32 ; <i64> [#uses=1]
- %10 = trunc i64 %sroa.store.elt to i32 ; <i32> [#uses=3]
- %tmp52 = inttoptr i32 %9 to %"struct.llvm::SDNode"* ; <%"struct.llvm::SDNode"*> [#uses=3]
- %11 = getelementptr %"struct.llvm::SelectionDAG"* %DAG, i32 0, i32 5 ; <%"struct.llvm::SDNode"*> [#uses=1]
- %12 = getelementptr %"struct.llvm::MVT"* %VT1.i186, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
- store i32 0, i32* %12, align 8
- %13 = getelementptr %"struct.llvm::MVT"* %VT2.i185, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
- store i32 12, i32* %13, align 8
- %14 = call i64 @_ZN4llvm12SelectionDAG9getVTListENS_3MVTES1_(%"struct.llvm::SelectionDAG"* %DAG, %"struct.llvm::MVT"* byval align 4 %VT1.i186, %"struct.llvm::MVT"* byval align 4 %VT2.i185) nounwind ; <i64> [#uses=1]
- %15 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i187, i32 0, i32 0, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- store %"struct.llvm::SDNode"* %11, %"struct.llvm::SDNode"** %15, align 8
- %16 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i187, i32 0, i32 0, i32 1 ; <i32*> [#uses=1]
- store i32 0, i32* %16, align 4
- %17 = getelementptr %"struct.llvm::SDNode"* %tmp52, i32 0, i32 9 ; <i16*> [#uses=1]
- %18 = load i16* %17, align 2 ; <i16> [#uses=1]
- %19 = zext i16 %18 to i32 ; <i32> [#uses=1]
- %20 = icmp ugt i32 %19, %10 ; <i1> [#uses=1]
- br i1 %20, label %_ZN4llvm12SelectionDAG12getCopyToRegENS_7SDValueENS_8DebugLocEjS1_S1_.exit193, label %bb.i.i.i188
-
-bb.i.i.i188: ; preds = %entry
- call void @__assert_rtn(i8* getelementptr ([13 x i8]* @_ZZNK4llvm6SDNode12getValueTypeEjE8__func__, i32 0, i32 0), i8* getelementptr ([65 x i8]* @"\01LC81", i32 0, i32 0), i32 1314, i8* getelementptr ([46 x i8]* @"\01LC83", i32 0, i32 0)) noreturn nounwind
- unreachable
-
-_ZN4llvm12SelectionDAG12getCopyToRegENS_7SDValueENS_8DebugLocEjS1_S1_.exit193: ; preds = %entry
- %21 = trunc i64 %14 to i32 ; <i32> [#uses=1]
- %tmp4.i.i189 = inttoptr i32 %21 to %"struct.llvm::MVT"* ; <%"struct.llvm::MVT"*> [#uses=1]
- %22 = getelementptr %"struct.llvm::SDNode"* %tmp52, i32 0, i32 6 ; <%"struct.llvm::MVT"**> [#uses=1]
- %23 = load %"struct.llvm::MVT"** %22, align 4 ; <%"struct.llvm::MVT"*> [#uses=1]
- %24 = getelementptr %"struct.llvm::MVT"* %23, i32 %10, i32 0, i32 0 ; <i32*> [#uses=1]
- %25 = load i32* %24, align 4 ; <i32> [#uses=1]
- %26 = getelementptr %"struct.llvm::MVT"* %0, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
- store i32 %25, i32* %26, align 8
- %27 = call i64 @_ZN4llvm12SelectionDAG11getRegisterEjNS_3MVTE(%"struct.llvm::SelectionDAG"* %DAG, i32 19, %"struct.llvm::MVT"* byval align 4 %0) nounwind ; <i64> [#uses=2]
- %28 = trunc i64 %27 to i32 ; <i32> [#uses=1]
- %sroa.store.elt.i190 = lshr i64 %27, 32 ; <i64> [#uses=1]
- %29 = trunc i64 %sroa.store.elt.i190 to i32 ; <i32> [#uses=1]
- %30 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i187, i32 0, i32 1, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- %tmp5.i191 = inttoptr i32 %28 to %"struct.llvm::SDNode"* ; <%"struct.llvm::SDNode"*> [#uses=1]
- store %"struct.llvm::SDNode"* %tmp5.i191, %"struct.llvm::SDNode"** %30, align 8
- %31 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i187, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
- store i32 %29, i32* %31, align 4
- %32 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i187, i32 0, i32 2, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- store %"struct.llvm::SDNode"* %tmp52, %"struct.llvm::SDNode"** %32, align 8
- %33 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i187, i32 0, i32 2, i32 1 ; <i32*> [#uses=1]
- store i32 %10, i32* %33, align 4
- %34 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i187, i32 0, i32 3, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- store %"struct.llvm::SDNode"* null, %"struct.llvm::SDNode"** %34, align 8
- %35 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i187, i32 0, i32 3, i32 1 ; <i32*> [#uses=1]
- store i32 0, i32* %35, align 4
- %36 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i187, i32 0, i32 0 ; <%"struct.llvm::SDValue"*> [#uses=1]
- %37 = call i64 @_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocEPKNS_3MVTEjPKNS_7SDValueEj(%"struct.llvm::SelectionDAG"* %DAG, i32 36, i32 %7, %"struct.llvm::MVT"* %tmp4.i.i189, i32 2, %"struct.llvm::SDValue"* %36, i32 3) nounwind ; <i64> [#uses=2]
- %38 = trunc i64 %37 to i32 ; <i32> [#uses=1]
- %tmp66 = inttoptr i32 %38 to %"struct.llvm::SDNode"* ; <%"struct.llvm::SDNode"*> [#uses=2]
- %39 = getelementptr %"struct.llvm::MVT"* %5, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
- store i32 12, i32* %39, align 8
- %40 = getelementptr %"struct.llvm::MVT"* %4, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
- store i32 0, i32* %40, align 8
- %41 = call i64 @_ZN4llvm12SelectionDAG9getVTListENS_3MVTES1_S1_(%"struct.llvm::SelectionDAG"* %DAG, %"struct.llvm::MVT"* byval align 4 %PtrVT, %"struct.llvm::MVT"* byval align 4 %4, %"struct.llvm::MVT"* byval align 4 %5) nounwind ; <i64> [#uses=2]
- %42 = trunc i64 %41 to i32 ; <i32> [#uses=1]
- %sroa.store.elt75 = lshr i64 %41, 32 ; <i64> [#uses=1]
- %43 = trunc i64 %sroa.store.elt75 to i16 ; <i16> [#uses=1]
- %44 = getelementptr %"struct.llvm::SDVTList"* %NodeTys, i32 0, i32 0 ; <%"struct.llvm::MVT"**> [#uses=2]
- %tmp78 = inttoptr i32 %42 to %"struct.llvm::MVT"* ; <%"struct.llvm::MVT"*> [#uses=1]
- store %"struct.llvm::MVT"* %tmp78, %"struct.llvm::MVT"** %44, align 8
- %45 = getelementptr %"struct.llvm::SDVTList"* %NodeTys, i32 0, i32 1 ; <i16*> [#uses=2]
- store i16 %43, i16* %45, align 4
- %46 = getelementptr %"struct.llvm::GlobalAddressSDNode"* %GA, i32 0, i32 0, i32 9 ; <i16*> [#uses=1]
- %47 = load i16* %46, align 2 ; <i16> [#uses=1]
- %48 = icmp eq i16 %47, 0 ; <i1> [#uses=1]
- br i1 %48, label %bb.i, label %_ZNK4llvm6SDNode12getValueTypeEj.exit
-
-bb.i: ; preds = %_ZN4llvm12SelectionDAG12getCopyToRegENS_7SDValueENS_8DebugLocEjS1_S1_.exit193
- call void @__assert_rtn(i8* getelementptr ([13 x i8]* @_ZZNK4llvm6SDNode12getValueTypeEjE8__func__, i32 0, i32 0), i8* getelementptr ([65 x i8]* @"\01LC81", i32 0, i32 0), i32 1314, i8* getelementptr ([46 x i8]* @"\01LC83", i32 0, i32 0)) noreturn nounwind
- unreachable
-
-_ZNK4llvm6SDNode12getValueTypeEj.exit: ; preds = %_ZN4llvm12SelectionDAG12getCopyToRegENS_7SDValueENS_8DebugLocEjS1_S1_.exit193
- %sroa.store.elt63 = lshr i64 %37, 32 ; <i64> [#uses=1]
- %49 = trunc i64 %sroa.store.elt63 to i32 ; <i32> [#uses=1]
- %50 = getelementptr %"struct.llvm::GlobalAddressSDNode"* %GA, i32 0, i32 2 ; <i64*> [#uses=1]
- %51 = load i64* %50, align 4 ; <i64> [#uses=1]
- %52 = getelementptr %"struct.llvm::GlobalAddressSDNode"* %GA, i32 0, i32 0, i32 6 ; <%"struct.llvm::MVT"**> [#uses=1]
- %53 = load %"struct.llvm::MVT"** %52, align 4 ; <%"struct.llvm::MVT"*> [#uses=1]
- %54 = getelementptr %"struct.llvm::MVT"* %53, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
- %55 = load i32* %54, align 4 ; <i32> [#uses=1]
- %56 = getelementptr %"struct.llvm::GlobalAddressSDNode"* %GA, i32 0, i32 1 ; <%"struct.llvm::GlobalValue"**> [#uses=1]
- %57 = load %"struct.llvm::GlobalValue"** %56, align 4 ; <%"struct.llvm::GlobalValue"*> [#uses=1]
- %58 = getelementptr %"struct.llvm::MVT"* %VT182, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
- store i32 %55, i32* %58, align 8
- %59 = call i64 @_ZN4llvm12SelectionDAG16getGlobalAddressEPKNS_11GlobalValueENS_3MVTExb(%"struct.llvm::SelectionDAG"* %DAG, %"struct.llvm::GlobalValue"* %57, %"struct.llvm::MVT"* byval align 4 %VT182, i64 %51, i8 zeroext 1) nounwind ; <i64> [#uses=2]
- %60 = trunc i64 %59 to i32 ; <i32> [#uses=1]
- %sroa.store.elt83 = lshr i64 %59, 32 ; <i64> [#uses=1]
- %61 = trunc i64 %sroa.store.elt83 to i32 ; <i32> [#uses=1]
- %tmp86 = inttoptr i32 %60 to %"struct.llvm::SDNode"* ; <%"struct.llvm::SDNode"*> [#uses=1]
- %62 = getelementptr [3 x %"struct.llvm::SDValue"]* %Ops, i32 0, i32 0, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- store %"struct.llvm::SDNode"* %tmp66, %"struct.llvm::SDNode"** %62, align 8
- %63 = getelementptr [3 x %"struct.llvm::SDValue"]* %Ops, i32 0, i32 0, i32 1 ; <i32*> [#uses=1]
- store i32 %49, i32* %63, align 4
- %64 = getelementptr [3 x %"struct.llvm::SDValue"]* %Ops, i32 0, i32 1, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- store %"struct.llvm::SDNode"* %tmp86, %"struct.llvm::SDNode"** %64, align 8
- %65 = getelementptr [3 x %"struct.llvm::SDValue"]* %Ops, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
- store i32 %61, i32* %65, align 4
- %66 = getelementptr [3 x %"struct.llvm::SDValue"]* %Ops, i32 0, i32 2, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- store %"struct.llvm::SDNode"* %tmp66, %"struct.llvm::SDNode"** %66, align 8
- %67 = getelementptr [3 x %"struct.llvm::SDValue"]* %Ops, i32 0, i32 2, i32 1 ; <i32*> [#uses=1]
- store i32 1, i32* %67, align 4
- %68 = getelementptr [3 x %"struct.llvm::SDValue"]* %Ops, i32 0, i32 0 ; <%"struct.llvm::SDValue"*> [#uses=1]
- %69 = call i64 @_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_8SDVTListEPKNS_7SDValueEj(%"struct.llvm::SelectionDAG"* %DAG, i32 220, i32 %7, %"struct.llvm::SDVTList"* byval align 4 %NodeTys, %"struct.llvm::SDValue"* %68, i32 3) nounwind ; <i64> [#uses=2]
- %70 = trunc i64 %69 to i32 ; <i32> [#uses=1]
- %sroa.store.elt89 = lshr i64 %69, 32 ; <i64> [#uses=1]
- %71 = trunc i64 %sroa.store.elt89 to i32 ; <i32> [#uses=3]
- %tmp92 = inttoptr i32 %70 to %"struct.llvm::SDNode"* ; <%"struct.llvm::SDNode"*> [#uses=7]
- call void @_ZNK4llvm6SDNode4dumpEv(%"struct.llvm::SDNode"* %tmp92) nounwind
- %72 = getelementptr %"struct.llvm::MVT"* %VT1.i174, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
- store i32 0, i32* %72, align 8
- %73 = getelementptr %"struct.llvm::MVT"* %VT2.i173, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
- store i32 12, i32* %73, align 8
- %74 = call i64 @_ZN4llvm12SelectionDAG9getVTListENS_3MVTES1_(%"struct.llvm::SelectionDAG"* %DAG, %"struct.llvm::MVT"* byval align 4 %VT1.i174, %"struct.llvm::MVT"* byval align 4 %VT2.i173) nounwind ; <i64> [#uses=1]
- %75 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i175, i32 0, i32 0, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- store %"struct.llvm::SDNode"* %tmp92, %"struct.llvm::SDNode"** %75, align 8
- %76 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i175, i32 0, i32 0, i32 1 ; <i32*> [#uses=1]
- store i32 1, i32* %76, align 4
- %77 = getelementptr %"struct.llvm::SDNode"* %tmp92, i32 0, i32 9 ; <i16*> [#uses=1]
- %78 = load i16* %77, align 2 ; <i16> [#uses=1]
- %79 = zext i16 %78 to i32 ; <i32> [#uses=1]
- %80 = icmp ugt i32 %79, %71 ; <i1> [#uses=1]
- br i1 %80, label %_ZN4llvm12SelectionDAG12getCopyToRegENS_7SDValueENS_8DebugLocEjS1_S1_.exit, label %bb.i.i.i
-
-bb.i.i.i: ; preds = %_ZNK4llvm6SDNode12getValueTypeEj.exit
- call void @__assert_rtn(i8* getelementptr ([13 x i8]* @_ZZNK4llvm6SDNode12getValueTypeEjE8__func__, i32 0, i32 0), i8* getelementptr ([65 x i8]* @"\01LC81", i32 0, i32 0), i32 1314, i8* getelementptr ([46 x i8]* @"\01LC83", i32 0, i32 0)) noreturn nounwind
- unreachable
-
-_ZN4llvm12SelectionDAG12getCopyToRegENS_7SDValueENS_8DebugLocEjS1_S1_.exit: ; preds = %_ZNK4llvm6SDNode12getValueTypeEj.exit
- %81 = trunc i64 %74 to i32 ; <i32> [#uses=1]
- %tmp4.i.i176 = inttoptr i32 %81 to %"struct.llvm::MVT"* ; <%"struct.llvm::MVT"*> [#uses=1]
- %82 = getelementptr %"struct.llvm::SDNode"* %tmp92, i32 0, i32 6 ; <%"struct.llvm::MVT"**> [#uses=1]
- %83 = load %"struct.llvm::MVT"** %82, align 4 ; <%"struct.llvm::MVT"*> [#uses=1]
- %84 = getelementptr %"struct.llvm::MVT"* %83, i32 %71, i32 0, i32 0 ; <i32*> [#uses=1]
- %85 = load i32* %84, align 4 ; <i32> [#uses=1]
- %86 = getelementptr %"struct.llvm::MVT"* %1, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
- store i32 %85, i32* %86, align 8
- %87 = call i64 @_ZN4llvm12SelectionDAG11getRegisterEjNS_3MVTE(%"struct.llvm::SelectionDAG"* %DAG, i32 17, %"struct.llvm::MVT"* byval align 4 %1) nounwind ; <i64> [#uses=2]
- %88 = trunc i64 %87 to i32 ; <i32> [#uses=1]
- %sroa.store.elt.i177 = lshr i64 %87, 32 ; <i64> [#uses=1]
- %89 = trunc i64 %sroa.store.elt.i177 to i32 ; <i32> [#uses=1]
- %90 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i175, i32 0, i32 1, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- %tmp5.i178 = inttoptr i32 %88 to %"struct.llvm::SDNode"* ; <%"struct.llvm::SDNode"*> [#uses=1]
- store %"struct.llvm::SDNode"* %tmp5.i178, %"struct.llvm::SDNode"** %90, align 8
- %91 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i175, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
- store i32 %89, i32* %91, align 4
- %92 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i175, i32 0, i32 2, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- store %"struct.llvm::SDNode"* %tmp92, %"struct.llvm::SDNode"** %92, align 8
- %93 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i175, i32 0, i32 2, i32 1 ; <i32*> [#uses=1]
- store i32 %71, i32* %93, align 4
- %94 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i175, i32 0, i32 3, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- store %"struct.llvm::SDNode"* %tmp92, %"struct.llvm::SDNode"** %94, align 8
- %95 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i175, i32 0, i32 3, i32 1 ; <i32*> [#uses=1]
- store i32 2, i32* %95, align 4
- %96 = icmp eq %"struct.llvm::SDNode"* %tmp92, null ; <i1> [#uses=1]
- %iftmp.583.0.i = select i1 %96, i32 3, i32 4 ; <i32> [#uses=1]
- %97 = getelementptr [4 x %"struct.llvm::SDValue"]* %Ops.i175, i32 0, i32 0 ; <%"struct.llvm::SDValue"*> [#uses=1]
- %98 = call i64 @_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocEPKNS_3MVTEjPKNS_7SDValueEj(%"struct.llvm::SelectionDAG"* %DAG, i32 36, i32 %7, %"struct.llvm::MVT"* %tmp4.i.i176, i32 2, %"struct.llvm::SDValue"* %97, i32 %iftmp.583.0.i) nounwind ; <i64> [#uses=2]
- %99 = trunc i64 %98 to i32 ; <i32> [#uses=1]
- %sroa.store.elt107 = lshr i64 %98, 32 ; <i64> [#uses=1]
- %100 = trunc i64 %sroa.store.elt107 to i32 ; <i32> [#uses=1]
- %tmp110 = inttoptr i32 %99 to %"struct.llvm::SDNode"* ; <%"struct.llvm::SDNode"*> [#uses=2]
- %101 = getelementptr %"struct.llvm::MVT"* %3, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
- store i32 12, i32* %101, align 8
- %102 = getelementptr %"struct.llvm::MVT"* %2, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
- store i32 0, i32* %102, align 8
- %103 = call i64 @_ZN4llvm12SelectionDAG9getVTListENS_3MVTES1_(%"struct.llvm::SelectionDAG"* %DAG, %"struct.llvm::MVT"* byval align 4 %2, %"struct.llvm::MVT"* byval align 4 %3) nounwind ; <i64> [#uses=2]
- %104 = trunc i64 %103 to i32 ; <i32> [#uses=1]
- %sroa.store.elt119 = lshr i64 %103, 32 ; <i64> [#uses=1]
- %105 = trunc i64 %sroa.store.elt119 to i16 ; <i16> [#uses=1]
- %tmp122 = inttoptr i32 %104 to %"struct.llvm::MVT"* ; <%"struct.llvm::MVT"*> [#uses=1]
- store %"struct.llvm::MVT"* %tmp122, %"struct.llvm::MVT"** %44, align 8
- store i16 %105, i16* %45, align 4
- %106 = getelementptr [5 x %"struct.llvm::SDValue"]* %Ops1, i32 0, i32 0, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- store %"struct.llvm::SDNode"* %tmp110, %"struct.llvm::SDNode"** %106, align 8
- %107 = getelementptr [5 x %"struct.llvm::SDValue"]* %Ops1, i32 0, i32 0, i32 1 ; <i32*> [#uses=1]
- store i32 %100, i32* %107, align 4
- %108 = call i64 @_ZN4llvm12SelectionDAG23getTargetExternalSymbolEPKcNS_3MVTE(%"struct.llvm::SelectionDAG"* %DAG, i8* getelementptr ([16 x i8]* @"\01LC197", i32 0, i32 0), %"struct.llvm::MVT"* byval align 4 %PtrVT) nounwind ; <i64> [#uses=2]
- %109 = trunc i64 %108 to i32 ; <i32> [#uses=1]
- %sroa.store.elt125 = lshr i64 %108, 32 ; <i64> [#uses=1]
- %110 = trunc i64 %sroa.store.elt125 to i32 ; <i32> [#uses=1]
- %111 = getelementptr [5 x %"struct.llvm::SDValue"]* %Ops1, i32 0, i32 1, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- %tmp128 = inttoptr i32 %109 to %"struct.llvm::SDNode"* ; <%"struct.llvm::SDNode"*> [#uses=1]
- store %"struct.llvm::SDNode"* %tmp128, %"struct.llvm::SDNode"** %111, align 8
- %112 = getelementptr [5 x %"struct.llvm::SDValue"]* %Ops1, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
- store i32 %110, i32* %112, align 4
- %113 = call i64 @_ZN4llvm12SelectionDAG11getRegisterEjNS_3MVTE(%"struct.llvm::SelectionDAG"* %DAG, i32 17, %"struct.llvm::MVT"* byval align 4 %PtrVT) nounwind ; <i64> [#uses=2]
- %114 = trunc i64 %113 to i32 ; <i32> [#uses=1]
- %sroa.store.elt131 = lshr i64 %113, 32 ; <i64> [#uses=1]
- %115 = trunc i64 %sroa.store.elt131 to i32 ; <i32> [#uses=1]
- %116 = getelementptr [5 x %"struct.llvm::SDValue"]* %Ops1, i32 0, i32 2, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- %tmp134 = inttoptr i32 %114 to %"struct.llvm::SDNode"* ; <%"struct.llvm::SDNode"*> [#uses=1]
- store %"struct.llvm::SDNode"* %tmp134, %"struct.llvm::SDNode"** %116, align 8
- %117 = getelementptr [5 x %"struct.llvm::SDValue"]* %Ops1, i32 0, i32 2, i32 1 ; <i32*> [#uses=1]
- store i32 %115, i32* %117, align 4
- %118 = call i64 @_ZN4llvm12SelectionDAG11getRegisterEjNS_3MVTE(%"struct.llvm::SelectionDAG"* %DAG, i32 19, %"struct.llvm::MVT"* byval align 4 %PtrVT) nounwind ; <i64> [#uses=2]
- %119 = trunc i64 %118 to i32 ; <i32> [#uses=1]
- %sroa.store.elt137 = lshr i64 %118, 32 ; <i64> [#uses=1]
- %120 = trunc i64 %sroa.store.elt137 to i32 ; <i32> [#uses=1]
- %121 = getelementptr [5 x %"struct.llvm::SDValue"]* %Ops1, i32 0, i32 3, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- %tmp140 = inttoptr i32 %119 to %"struct.llvm::SDNode"* ; <%"struct.llvm::SDNode"*> [#uses=1]
- store %"struct.llvm::SDNode"* %tmp140, %"struct.llvm::SDNode"** %121, align 8
- %122 = getelementptr [5 x %"struct.llvm::SDValue"]* %Ops1, i32 0, i32 3, i32 1 ; <i32*> [#uses=1]
- store i32 %120, i32* %122, align 4
- %123 = getelementptr [5 x %"struct.llvm::SDValue"]* %Ops1, i32 0, i32 4, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- store %"struct.llvm::SDNode"* %tmp110, %"struct.llvm::SDNode"** %123, align 8
- %124 = getelementptr [5 x %"struct.llvm::SDValue"]* %Ops1, i32 0, i32 4, i32 1 ; <i32*> [#uses=1]
- store i32 1, i32* %124, align 4
- %125 = getelementptr [5 x %"struct.llvm::SDValue"]* %Ops1, i32 0, i32 0 ; <%"struct.llvm::SDValue"*> [#uses=1]
- %126 = call i64 @_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_8SDVTListEPKNS_7SDValueEj(%"struct.llvm::SelectionDAG"* %DAG, i32 195, i32 %7, %"struct.llvm::SDVTList"* byval align 4 %NodeTys, %"struct.llvm::SDValue"* %125, i32 5) nounwind ; <i64> [#uses=2]
- %127 = trunc i64 %126 to i32 ; <i32> [#uses=1]
- %sroa.store.elt143 = lshr i64 %126, 32 ; <i64> [#uses=1]
- %128 = trunc i64 %sroa.store.elt143 to i32 ; <i32> [#uses=1]
- %tmp146 = inttoptr i32 %127 to %"struct.llvm::SDNode"* ; <%"struct.llvm::SDNode"*> [#uses=3]
- %tmp171195 = getelementptr %"struct.llvm::MVT"* %PtrVT, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
- %tmp197 = load i32* %tmp171195, align 1 ; <i32> [#uses=2]
- %129 = getelementptr %"struct.llvm::MVT"* %VT, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
- store i32 %tmp197, i32* %129, align 8
- %130 = getelementptr %"struct.llvm::MVT"* %VT1.i, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
- store i32 %tmp197, i32* %130, align 8
- %131 = getelementptr %"struct.llvm::MVT"* %VT2.i, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
- store i32 0, i32* %131, align 8
- %132 = getelementptr %"struct.llvm::MVT"* %VT3.i, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
- store i32 12, i32* %132, align 8
- %133 = call i64 @_ZN4llvm12SelectionDAG9getVTListENS_3MVTES1_S1_(%"struct.llvm::SelectionDAG"* %DAG, %"struct.llvm::MVT"* byval align 4 %VT1.i, %"struct.llvm::MVT"* byval align 4 %VT2.i, %"struct.llvm::MVT"* byval align 4 %VT3.i) nounwind ; <i64> [#uses=1]
- %134 = trunc i64 %133 to i32 ; <i32> [#uses=1]
- %tmp4.i.i = inttoptr i32 %134 to %"struct.llvm::MVT"* ; <%"struct.llvm::MVT"*> [#uses=1]
- %135 = getelementptr [3 x %"struct.llvm::SDValue"]* %Ops.i, i32 0, i32 0, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- store %"struct.llvm::SDNode"* %tmp146, %"struct.llvm::SDNode"** %135, align 8
- %136 = getelementptr [3 x %"struct.llvm::SDValue"]* %Ops.i, i32 0, i32 0, i32 1 ; <i32*> [#uses=1]
- store i32 %128, i32* %136, align 4
- %137 = call i64 @_ZN4llvm12SelectionDAG11getRegisterEjNS_3MVTE(%"struct.llvm::SelectionDAG"* %DAG, i32 17, %"struct.llvm::MVT"* byval align 4 %VT) nounwind ; <i64> [#uses=2]
- %138 = trunc i64 %137 to i32 ; <i32> [#uses=1]
- %sroa.store.elt.i = lshr i64 %137, 32 ; <i64> [#uses=1]
- %139 = trunc i64 %sroa.store.elt.i to i32 ; <i32> [#uses=1]
- %140 = getelementptr [3 x %"struct.llvm::SDValue"]* %Ops.i, i32 0, i32 1, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- %tmp5.i = inttoptr i32 %138 to %"struct.llvm::SDNode"* ; <%"struct.llvm::SDNode"*> [#uses=1]
- store %"struct.llvm::SDNode"* %tmp5.i, %"struct.llvm::SDNode"** %140, align 8
- %141 = getelementptr [3 x %"struct.llvm::SDValue"]* %Ops.i, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
- store i32 %139, i32* %141, align 4
- %142 = getelementptr [3 x %"struct.llvm::SDValue"]* %Ops.i, i32 0, i32 2, i32 0 ; <%"struct.llvm::SDNode"**> [#uses=1]
- store %"struct.llvm::SDNode"* %tmp146, %"struct.llvm::SDNode"** %142, align 8
- %143 = getelementptr [3 x %"struct.llvm::SDValue"]* %Ops.i, i32 0, i32 2, i32 1 ; <i32*> [#uses=1]
- store i32 1, i32* %143, align 4
- %144 = icmp eq %"struct.llvm::SDNode"* %tmp146, null ; <i1> [#uses=1]
- %iftmp.588.0.i = select i1 %144, i32 2, i32 3 ; <i32> [#uses=1]
- %145 = getelementptr [3 x %"struct.llvm::SDValue"]* %Ops.i, i32 0, i32 0 ; <%"struct.llvm::SDValue"*> [#uses=1]
- %146 = call i64 @_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocEPKNS_3MVTEjPKNS_7SDValueEj(%"struct.llvm::SelectionDAG"* %DAG, i32 37, i32 %7, %"struct.llvm::MVT"* %tmp4.i.i, i32 3, %"struct.llvm::SDValue"* %145, i32 %iftmp.588.0.i) nounwind ; <i64> [#uses=1]
- ret i64 %146
-}
-
-declare void @__assert_rtn(i8*, i8*, i32, i8*) noreturn
-
-declare i64 @_ZN4llvm12SelectionDAG16getGlobalAddressEPKNS_11GlobalValueENS_3MVTExb(%"struct.llvm::SelectionDAG"*, %"struct.llvm::GlobalValue"*, %"struct.llvm::MVT"* byval align 4, i64, i8 zeroext)
-
-declare i64 @_ZN4llvm12SelectionDAG9getVTListENS_3MVTES1_(%"struct.llvm::SelectionDAG"*, %"struct.llvm::MVT"* byval align 4, %"struct.llvm::MVT"* byval align 4)
-
-declare i64 @_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_8SDVTListEPKNS_7SDValueEj(%"struct.llvm::SelectionDAG"*, i32, i32, %"struct.llvm::SDVTList"* byval align 4, %"struct.llvm::SDValue"*, i32)
-
-declare i64 @_ZN4llvm12SelectionDAG11getRegisterEjNS_3MVTE(%"struct.llvm::SelectionDAG"*, i32, %"struct.llvm::MVT"* byval align 4)
-
-declare i64 @_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocEPKNS_3MVTEjPKNS_7SDValueEj(%"struct.llvm::SelectionDAG"*, i32, i32, %"struct.llvm::MVT"*, i32, %"struct.llvm::SDValue"*, i32)
-
-declare i64 @_ZN4llvm12SelectionDAG9getVTListENS_3MVTES1_S1_(%"struct.llvm::SelectionDAG"*, %"struct.llvm::MVT"* byval align 4, %"struct.llvm::MVT"* byval align 4, %"struct.llvm::MVT"* byval align 4)
-
-declare i64 @_ZN4llvm12SelectionDAG23getTargetExternalSymbolEPKcNS_3MVTE(%"struct.llvm::SelectionDAG"*, i8*, %"struct.llvm::MVT"* byval align 4)
-
-declare i64 @_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_3MVTE(%"struct.llvm::SelectionDAG"*, i32, i32, %"struct.llvm::MVT"* byval align 4)
-
-declare void @_ZNK4llvm6SDNode4dumpEv(%"struct.llvm::SDNode"*)
diff --git a/test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll b/test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll
index 5bd956a016269..abbe97ac193e3 100644
--- a/test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll
+++ b/test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll
@@ -1,4 +1,4 @@
-; RUN: llc -mtriple=i386-apple-darwin10.0 -relocation-model=pic \
+; RUN: llc -mtriple=i386-apple-darwin10.0 -relocation-model=pic -asm-verbose=false \
; RUN: -disable-fp-elim -mattr=-sse41,-sse3,+sse2 -post-RA-scheduler=false < %s | \
; RUN: FileCheck %s
; rdar://6808032
diff --git a/test/CodeGen/X86/2009-09-07-CoalescerBug.ll b/test/CodeGen/X86/2009-09-07-CoalescerBug.ll
index 55432be1c2c98..a5b4a79401ea8 100644
--- a/test/CodeGen/X86/2009-09-07-CoalescerBug.ll
+++ b/test/CodeGen/X86/2009-09-07-CoalescerBug.ll
@@ -8,8 +8,8 @@
define i64 @hammer_time(i64 %modulep, i64 %physfree) nounwind ssp noredzone noimplicitfloat {
; CHECK: hammer_time:
; CHECK: movq $Xrsvd, %rax
+; CHECK: movq $Xrsvd, %rsi
; CHECK: movq $Xrsvd, %rdi
-; CHECK: movq $Xrsvd, %r8
entry:
br i1 undef, label %if.then, label %if.end
diff --git a/test/CodeGen/X86/2009-09-10-LoadFoldingBug.ll b/test/CodeGen/X86/2009-09-10-LoadFoldingBug.ll
index 9e58872b73c85..7b5e871246c1f 100644
--- a/test/CodeGen/X86/2009-09-10-LoadFoldingBug.ll
+++ b/test/CodeGen/X86/2009-09-10-LoadFoldingBug.ll
@@ -13,7 +13,6 @@ define i32 @t(i32 %clientPort, i32 %pluginID, i32 %requestID, i32 %objectID, i64
entry:
; CHECK: _t:
; CHECK: movl 16(%rbp),
-; CHECK: movl 16(%rbp), %edx
%0 = zext i32 %argumentsLength to i64 ; <i64> [#uses=1]
%1 = zext i32 %clientPort to i64 ; <i64> [#uses=1]
%2 = inttoptr i64 %1 to %struct.ComplexType* ; <%struct.ComplexType*> [#uses=1]
diff --git a/test/CodeGen/X86/2009-11-04-SubregCoalescingBug.ll b/test/CodeGen/X86/2009-11-04-SubregCoalescingBug.ll
index 628b8993f3470..b5be65fb002bc 100644
--- a/test/CodeGen/X86/2009-11-04-SubregCoalescingBug.ll
+++ b/test/CodeGen/X86/2009-11-04-SubregCoalescingBug.ll
@@ -5,7 +5,7 @@ define void @bar(i32 %b, i32 %a) nounwind optsize ssp {
entry:
; CHECK: leal 15(%rsi), %edi
; CHECK-NOT: movl
-; CHECK: callq _foo
+; CHECK: _foo
%0 = add i32 %a, 15 ; <i32> [#uses=1]
%1 = zext i32 %0 to i64 ; <i64> [#uses=1]
tail call void @foo(i64 %1) nounwind
diff --git a/test/CodeGen/X86/2010-02-01-TaillCallCrash.ll b/test/CodeGen/X86/2010-02-01-TaillCallCrash.ll
new file mode 100644
index 0000000000000..275117483d621
--- /dev/null
+++ b/test/CodeGen/X86/2010-02-01-TaillCallCrash.ll
@@ -0,0 +1,12 @@
+; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu
+; PR6196
+
+%"char[]" = type [1 x i8]
+
+@.str = external constant %"char[]", align 1 ; <%"char[]"*> [#uses=1]
+
+define i32 @regex_subst() nounwind {
+entry:
+ %0 = tail call i32 bitcast (%"char[]"* @.str to i32 (i32)*)(i32 0) nounwind ; <i32> [#uses=1]
+ ret i32 %0
+}
diff --git a/test/CodeGen/X86/2010-02-03-DualUndef.ll b/test/CodeGen/X86/2010-02-03-DualUndef.ll
new file mode 100644
index 0000000000000..d116ecc6bde83
--- /dev/null
+++ b/test/CodeGen/X86/2010-02-03-DualUndef.ll
@@ -0,0 +1,27 @@
+; RUN: llc < %s -march=x86-64
+; PR6086
+define fastcc void @prepOutput() nounwind {
+bb: ; preds = %output.exit
+ br label %bb.i1
+
+bb.i1: ; preds = %bb7.i, %bb
+ br i1 undef, label %bb7.i, label %bb.nph.i
+
+bb.nph.i: ; preds = %bb.i1
+ br label %bb3.i
+
+bb3.i: ; preds = %bb5.i6, %bb.nph.i
+ %tmp10.i = trunc i64 undef to i32 ; <i32> [#uses=1]
+ br i1 undef, label %bb4.i, label %bb5.i6
+
+bb4.i: ; preds = %bb3.i
+ br label %bb5.i6
+
+bb5.i6: ; preds = %bb4.i, %bb3.i
+ %0 = phi i32 [ undef, %bb4.i ], [ undef, %bb3.i ] ; <i32> [#uses=1]
+ %1 = icmp slt i32 %0, %tmp10.i ; <i1> [#uses=1]
+ br i1 %1, label %bb7.i, label %bb3.i
+
+bb7.i: ; preds = %bb5.i6, %bb.i1
+ br label %bb.i1
+}
diff --git a/test/CodeGen/X86/2010-02-04-SchedulerBug.ll b/test/CodeGen/X86/2010-02-04-SchedulerBug.ll
new file mode 100644
index 0000000000000..c966e21d52dfc
--- /dev/null
+++ b/test/CodeGen/X86/2010-02-04-SchedulerBug.ll
@@ -0,0 +1,28 @@
+; RUN: llc < %s -mtriple=i386-apple-darwin11
+; rdar://7604000
+
+%struct.a_t = type { i8*, i64*, i8*, i32, i32, i64*, i64*, i64* }
+%struct.b_t = type { i32, i32, i32, i32, i64, i64, i64, i64 }
+
+define void @t(i32 %cNum, i64 %max) nounwind optsize ssp noimplicitfloat {
+entry:
+ %0 = load %struct.b_t** null, align 4 ; <%struct.b_t*> [#uses=1]
+ %1 = getelementptr inbounds %struct.b_t* %0, i32 %cNum, i32 5 ; <i64*> [#uses=1]
+ %2 = load i64* %1, align 4 ; <i64> [#uses=1]
+ %3 = icmp ult i64 %2, %max ; <i1> [#uses=1]
+ %4 = getelementptr inbounds %struct.a_t* null, i32 0, i32 7 ; <i64**> [#uses=1]
+ %5 = load i64** %4, align 4 ; <i64*> [#uses=0]
+ %6 = load i64* null, align 4 ; <i64> [#uses=1]
+ br i1 %3, label %bb2, label %bb
+
+bb: ; preds = %entry
+ br label %bb3
+
+bb2: ; preds = %entry
+ %7 = or i64 %6, undef ; <i64> [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb
+ %misc_enables.0 = phi i64 [ undef, %bb ], [ %7, %bb2 ] ; <i64> [#uses=0]
+ ret void
+}
diff --git a/test/CodeGen/X86/2010-02-12-CoalescerBug-Impdef.ll b/test/CodeGen/X86/2010-02-12-CoalescerBug-Impdef.ll
new file mode 100644
index 0000000000000..c5d3d16f81aab
--- /dev/null
+++ b/test/CodeGen/X86/2010-02-12-CoalescerBug-Impdef.ll
@@ -0,0 +1,260 @@
+; RUN: llc < %s > %t
+; PR6283
+
+; Tricky coalescer bug:
+; After coalescing %RAX with a virtual register, this instruction was rematted:
+;
+; %EAX<def> = MOV32rr %reg1070<kill>
+;
+; This instruction silently defined %RAX, and when rematting removed the
+; instruction, the live interval for %RAX was not properly updated. The valno
+; referred to a deleted instruction and bad things happened.
+;
+; The fix is to implicitly define %RAX when coalescing:
+;
+; %EAX<def> = MOV32rr %reg1070<kill>, %RAX<imp-def>
+;
+
+target 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"
+target triple = "x86_64-unknown-linux-gnu"
+
+module asm "\09.ident\09\22GCC: (GNU) 4.5.0 20100212 (experimental) LLVM: 95975\22"
+
+%0 = type { %"union gimple_statement_d"* }
+%"BITMAP_WORD[]" = type [2 x i64]
+%"char[]" = type [4 x i8]
+%"enum dom_state[]" = type [2 x i32]
+%"int[]" = type [4 x i32]
+%"struct VEC_basic_block_base" = type { i32, i32, [1 x %"struct basic_block_def"*] }
+%"struct VEC_basic_block_gc" = type { %"struct VEC_basic_block_base" }
+%"struct VEC_edge_base" = type { i32, i32, [1 x %"struct edge_def"*] }
+%"struct VEC_edge_gc" = type { %"struct VEC_edge_base" }
+%"struct VEC_gimple_base" = type { i32, i32, [1 x %"union gimple_statement_d"*] }
+%"struct VEC_gimple_gc" = type { %"struct VEC_gimple_base" }
+%"struct VEC_iv_cand_p_base" = type { i32, i32, [1 x %"struct iv_cand"*] }
+%"struct VEC_iv_cand_p_heap" = type { %"struct VEC_iv_cand_p_base" }
+%"struct VEC_iv_use_p_base" = type { i32, i32, [1 x %"struct iv_use"*] }
+%"struct VEC_iv_use_p_heap" = type { %"struct VEC_iv_use_p_base" }
+%"struct VEC_loop_p_base" = type { i32, i32, [1 x %"struct loop"*] }
+%"struct VEC_loop_p_gc" = type { %"struct VEC_loop_p_base" }
+%"struct VEC_rtx_base" = type { i32, i32, [1 x %"struct rtx_def"*] }
+%"struct VEC_rtx_gc" = type { %"struct VEC_rtx_base" }
+%"struct VEC_tree_base" = type { i32, i32, [1 x %"union tree_node"*] }
+%"struct VEC_tree_gc" = type { %"struct VEC_tree_base" }
+%"struct _obstack_chunk" = type { i8*, %"struct _obstack_chunk"*, %"char[]" }
+%"struct basic_block_def" = type { %"struct VEC_edge_gc"*, %"struct VEC_edge_gc"*, i8*, %"struct loop"*, [2 x %"struct et_node"*], %"struct basic_block_def"*, %"struct basic_block_def"*, %"union basic_block_il_dependent", i64, i32, i32, i32, i32, i32 }
+%"struct bitmap_element" = type { %"struct bitmap_element"*, %"struct bitmap_element"*, i32, %"BITMAP_WORD[]" }
+%"struct bitmap_head_def" = type { %"struct bitmap_element"*, %"struct bitmap_element"*, i32, %"struct bitmap_obstack"* }
+%"struct bitmap_obstack" = type { %"struct bitmap_element"*, %"struct bitmap_head_def"*, %"struct obstack" }
+%"struct block_symbol" = type { [3 x %"union rtunion"], %"struct object_block"*, i64 }
+%"struct comp_cost" = type { i32, i32 }
+%"struct control_flow_graph" = type { %"struct basic_block_def"*, %"struct basic_block_def"*, %"struct VEC_basic_block_gc"*, i32, i32, i32, %"struct VEC_basic_block_gc"*, i32, %"enum dom_state[]", %"enum dom_state[]", i32, i32 }
+%"struct cost_pair" = type { %"struct iv_cand"*, %"struct comp_cost", %"struct bitmap_head_def"*, %"union tree_node"* }
+%"struct def_optype_d" = type { %"struct def_optype_d"*, %"union tree_node"** }
+%"struct double_int" = type { i64, i64 }
+%"struct edge_def" = type { %"struct basic_block_def"*, %"struct basic_block_def"*, %"union edge_def_insns", i8*, %"union tree_node"*, i32, i32, i32, i32, i64 }
+%"struct eh_status" = type opaque
+%"struct et_node" = type opaque
+%"struct function" = type { %"struct eh_status"*, %"struct control_flow_graph"*, %"struct gimple_seq_d"*, %"struct gimple_df"*, %"struct loops"*, %"struct htab"*, %"union tree_node"*, %"union tree_node"*, %"union tree_node"*, %"union tree_node"*, %"struct machine_function"*, %"struct language_function"*, %"struct htab"*, i32, i32, i32, i32, i32, i32, i8*, i8, i8, i8, i8 }
+%"struct gimple_bb_info" = type { %"struct gimple_seq_d"*, %"struct gimple_seq_d"* }
+%"struct gimple_df" = type { %"struct htab"*, %"struct VEC_gimple_gc"*, %"struct VEC_tree_gc"*, %"union tree_node"*, %"struct pt_solution", %"struct pt_solution", %"struct pointer_map_t"*, %"union tree_node"*, %"struct htab"*, %"struct bitmap_head_def"*, i8, %"struct ssa_operands" }
+%"struct gimple_seq_d" = type { %"struct gimple_seq_node_d"*, %"struct gimple_seq_node_d"*, %"struct gimple_seq_d"* }
+%"struct gimple_seq_node_d" = type { %"union gimple_statement_d"*, %"struct gimple_seq_node_d"*, %"struct gimple_seq_node_d"* }
+%"struct gimple_statement_base" = type { i8, i8, i16, i32, i32, i32, %"struct basic_block_def"*, %"union tree_node"* }
+%"struct gimple_statement_phi" = type { %"struct gimple_statement_base", i32, i32, %"union tree_node"*, %"struct phi_arg_d[]" }
+%"struct htab" = type { i32 (i8*)*, i32 (i8*, i8*)*, void (i8*)*, i8**, i64, i64, i64, i32, i32, i8* (i64, i64)*, void (i8*)*, i8*, i8* (i8*, i64, i64)*, void (i8*, i8*)*, i32 }
+%"struct iv" = type { %"union tree_node"*, %"union tree_node"*, %"union tree_node"*, %"union tree_node"*, i8, i8, i32 }
+%"struct iv_cand" = type { i32, i8, i32, %"union gimple_statement_d"*, %"union tree_node"*, %"union tree_node"*, %"struct iv"*, i32, i32, %"struct iv_use"*, %"struct bitmap_head_def"* }
+%"struct iv_use" = type { i32, i32, %"struct iv"*, %"union gimple_statement_d"*, %"union tree_node"**, %"struct bitmap_head_def"*, i32, %"struct cost_pair"*, %"struct iv_cand"* }
+%"struct ivopts_data" = type { %"struct loop"*, %"struct pointer_map_t"*, i32, i32, %"struct version_info"*, %"struct bitmap_head_def"*, %"struct VEC_iv_use_p_heap"*, %"struct VEC_iv_cand_p_heap"*, %"struct bitmap_head_def"*, i32, i8, i8 }
+%"struct lang_decl" = type opaque
+%"struct language_function" = type opaque
+%"struct loop" = type { i32, i32, %"struct basic_block_def"*, %"struct basic_block_def"*, %"struct comp_cost", i32, i32, %"struct VEC_loop_p_gc"*, %"struct loop"*, %"struct loop"*, i8*, %"union tree_node"*, %"struct double_int", %"struct double_int", i8, i8, i32, %"struct nb_iter_bound"*, %"struct loop_exit"*, i8, %"union tree_node"* }
+%"struct loop_exit" = type { %"struct edge_def"*, %"struct loop_exit"*, %"struct loop_exit"*, %"struct loop_exit"* }
+%"struct loops" = type { i32, %"struct VEC_loop_p_gc"*, %"struct htab"*, %"struct loop"* }
+%"struct machine_cfa_state" = type { %"struct rtx_def"*, i64 }
+%"struct machine_function" = type { %"struct stack_local_entry"*, i8*, i32, i32, %"int[]", i32, %"struct machine_cfa_state", i32, i8 }
+%"struct nb_iter_bound" = type { %"union gimple_statement_d"*, %"struct double_int", i8, %"struct nb_iter_bound"* }
+%"struct object_block" = type { %"union section"*, i32, i64, %"struct VEC_rtx_gc"*, %"struct VEC_rtx_gc"* }
+%"struct obstack" = type { i64, %"struct _obstack_chunk"*, i8*, i8*, i8*, i64, i32, %"struct _obstack_chunk"* (i8*, i64)*, void (i8*, %"struct _obstack_chunk"*)*, i8*, i8 }
+%"struct phi_arg_d" = type { %"struct ssa_use_operand_d", %"union tree_node"*, i32 }
+%"struct phi_arg_d[]" = type [1 x %"struct phi_arg_d"]
+%"struct pointer_map_t" = type opaque
+%"struct pt_solution" = type { i8, %"struct bitmap_head_def"* }
+%"struct rtx_def" = type { i16, i8, i8, %"union u" }
+%"struct section_common" = type { i32 }
+%"struct ssa_operand_memory_d" = type { %"struct ssa_operand_memory_d"*, %"uchar[]" }
+%"struct ssa_operands" = type { %"struct ssa_operand_memory_d"*, i32, i32, i8, %"struct def_optype_d"*, %"struct use_optype_d"* }
+%"struct ssa_use_operand_d" = type { %"struct ssa_use_operand_d"*, %"struct ssa_use_operand_d"*, %0, %"union tree_node"** }
+%"struct stack_local_entry" = type opaque
+%"struct tree_base" = type <{ i16, i8, i8, i8, [2 x i8], i8 }>
+%"struct tree_common" = type { %"struct tree_base", %"union tree_node"*, %"union tree_node"* }
+%"struct tree_decl_common" = type { %"struct tree_decl_minimal", %"union tree_node"*, i8, i8, i8, i8, i8, i32, %"union tree_node"*, %"union tree_node"*, %"union tree_node"*, %"union tree_node"*, %"struct lang_decl"* }
+%"struct tree_decl_minimal" = type { %"struct tree_common", i32, i32, %"union tree_node"*, %"union tree_node"* }
+%"struct tree_decl_non_common" = type { %"struct tree_decl_with_vis", %"union tree_node"*, %"union tree_node"*, %"union tree_node"*, %"union tree_node"* }
+%"struct tree_decl_with_rtl" = type { %"struct tree_decl_common", %"struct rtx_def"* }
+%"struct tree_decl_with_vis" = type { %"struct tree_decl_with_rtl", %"union tree_node"*, %"union tree_node"*, %"union tree_node"*, i8, i8, i8 }
+%"struct tree_function_decl" = type { %"struct tree_decl_non_common", %"struct function"*, %"union tree_node"*, %"union tree_node"*, %"union tree_node"*, i16, i8, i8 }
+%"struct unnamed_section" = type { %"struct section_common", void (i8*)*, i8*, %"union section"* }
+%"struct use_optype_d" = type { %"struct use_optype_d"*, %"struct ssa_use_operand_d" }
+%"struct version_info" = type { %"union tree_node"*, %"struct iv"*, i8, i32, i8 }
+%"uchar[]" = type [1 x i8]
+%"union basic_block_il_dependent" = type { %"struct gimple_bb_info"* }
+%"union edge_def_insns" = type { %"struct gimple_seq_d"* }
+%"union gimple_statement_d" = type { %"struct gimple_statement_phi" }
+%"union rtunion" = type { i8* }
+%"union section" = type { %"struct unnamed_section" }
+%"union tree_node" = type { %"struct tree_function_decl" }
+%"union u" = type { %"struct block_symbol" }
+
+declare fastcc %"union tree_node"* @get_computation_at(%"struct loop"*, %"struct iv_use"* nocapture, %"struct iv_cand"* nocapture, %"union gimple_statement_d"*) nounwind
+
+declare fastcc i32 @computation_cost(%"union tree_node"*, i8 zeroext) nounwind
+
+define fastcc i64 @get_computation_cost_at(%"struct ivopts_data"* %data, %"struct iv_use"* nocapture %use, %"struct iv_cand"* nocapture %cand, i8 zeroext %address_p, %"struct bitmap_head_def"** %depends_on, %"union gimple_statement_d"* %at, i8* %can_autoinc) nounwind {
+entry:
+ br i1 undef, label %"100", label %"4"
+
+"4": ; preds = %entry
+ br i1 undef, label %"6", label %"5"
+
+"5": ; preds = %"4"
+ unreachable
+
+"6": ; preds = %"4"
+ br i1 undef, label %"8", label %"7"
+
+"7": ; preds = %"6"
+ unreachable
+
+"8": ; preds = %"6"
+ br i1 undef, label %"100", label %"10"
+
+"10": ; preds = %"8"
+ br i1 undef, label %"17", label %"16"
+
+"16": ; preds = %"10"
+ unreachable
+
+"17": ; preds = %"10"
+ br i1 undef, label %"19", label %"18"
+
+"18": ; preds = %"17"
+ unreachable
+
+"19": ; preds = %"17"
+ br i1 undef, label %"93", label %"20"
+
+"20": ; preds = %"19"
+ br i1 undef, label %"23", label %"21"
+
+"21": ; preds = %"20"
+ unreachable
+
+"23": ; preds = %"20"
+ br i1 undef, label %"100", label %"25"
+
+"25": ; preds = %"23"
+ br i1 undef, label %"100", label %"26"
+
+"26": ; preds = %"25"
+ br i1 undef, label %"30", label %"28"
+
+"28": ; preds = %"26"
+ unreachable
+
+"30": ; preds = %"26"
+ br i1 undef, label %"59", label %"51"
+
+"51": ; preds = %"30"
+ br i1 undef, label %"55", label %"52"
+
+"52": ; preds = %"51"
+ unreachable
+
+"55": ; preds = %"51"
+ %0 = icmp ugt i32 0, undef ; <i1> [#uses=1]
+ br i1 %0, label %"50.i", label %"9.i"
+
+"9.i": ; preds = %"55"
+ unreachable
+
+"50.i": ; preds = %"55"
+ br i1 undef, label %"55.i", label %"54.i"
+
+"54.i": ; preds = %"50.i"
+ br i1 undef, label %"57.i", label %"55.i"
+
+"55.i": ; preds = %"54.i", %"50.i"
+ unreachable
+
+"57.i": ; preds = %"54.i"
+ br label %"63.i"
+
+"61.i": ; preds = %"63.i"
+ br i1 undef, label %"64.i", label %"62.i"
+
+"62.i": ; preds = %"61.i"
+ br label %"63.i"
+
+"63.i": ; preds = %"62.i", %"57.i"
+ br i1 undef, label %"61.i", label %"64.i"
+
+"64.i": ; preds = %"63.i", %"61.i"
+ unreachable
+
+"59": ; preds = %"30"
+ br i1 undef, label %"60", label %"82"
+
+"60": ; preds = %"59"
+ br i1 undef, label %"61", label %"82"
+
+"61": ; preds = %"60"
+ br i1 undef, label %"62", label %"82"
+
+"62": ; preds = %"61"
+ br i1 undef, label %"100", label %"63"
+
+"63": ; preds = %"62"
+ br i1 undef, label %"65", label %"64"
+
+"64": ; preds = %"63"
+ unreachable
+
+"65": ; preds = %"63"
+ br i1 undef, label %"66", label %"67"
+
+"66": ; preds = %"65"
+ unreachable
+
+"67": ; preds = %"65"
+ %1 = load i32* undef, align 4 ; <i32> [#uses=0]
+ br label %"100"
+
+"82": ; preds = %"61", %"60", %"59"
+ unreachable
+
+"93": ; preds = %"19"
+ %2 = call fastcc %"union tree_node"* @get_computation_at(%"struct loop"* undef, %"struct iv_use"* %use, %"struct iv_cand"* %cand, %"union gimple_statement_d"* %at) nounwind ; <%"union tree_node"*> [#uses=1]
+ br i1 undef, label %"100", label %"97"
+
+"97": ; preds = %"93"
+ br i1 undef, label %"99", label %"98"
+
+"98": ; preds = %"97"
+ br label %"99"
+
+"99": ; preds = %"98", %"97"
+ %3 = phi %"union tree_node"* [ undef, %"98" ], [ %2, %"97" ] ; <%"union tree_node"*> [#uses=1]
+ %4 = call fastcc i32 @computation_cost(%"union tree_node"* %3, i8 zeroext undef) nounwind ; <i32> [#uses=1]
+ br label %"100"
+
+"100": ; preds = %"99", %"93", %"67", %"62", %"25", %"23", %"8", %entry
+ %memtmp1.1.0 = phi i32 [ 0, %"99" ], [ 10000000, %entry ], [ 10000000, %"8" ], [ 10000000, %"23" ], [ 10000000, %"25" ], [ undef, %"62" ], [ undef, %"67" ], [ 10000000, %"93" ] ; <i32> [#uses=1]
+ %memtmp1.0.0 = phi i32 [ %4, %"99" ], [ 10000000, %entry ], [ 10000000, %"8" ], [ 10000000, %"23" ], [ 10000000, %"25" ], [ undef, %"62" ], [ undef, %"67" ], [ 10000000, %"93" ] ; <i32> [#uses=1]
+ %5 = zext i32 %memtmp1.0.0 to i64 ; <i64> [#uses=1]
+ %6 = zext i32 %memtmp1.1.0 to i64 ; <i64> [#uses=1]
+ %7 = shl i64 %6, 32 ; <i64> [#uses=1]
+ %8 = or i64 %7, %5 ; <i64> [#uses=1]
+ ret i64 %8
+}
diff --git a/test/CodeGen/X86/2010-02-15-ImplicitDefBug.ll b/test/CodeGen/X86/2010-02-15-ImplicitDefBug.ll
new file mode 100644
index 0000000000000..c429172852dfc
--- /dev/null
+++ b/test/CodeGen/X86/2010-02-15-ImplicitDefBug.ll
@@ -0,0 +1,80 @@
+; RUN: llc < %s > %t
+; PR6300
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32"
+target triple = "i386-pc-linux-gnu"
+
+; When the "154" loops back onto itself, it defines a register after using it.
+; The first value of the register is implicit-def.
+
+%"struct location_chain_def" = type { %"struct location_chain_def"*, %"struct rtx_def"*, %"struct rtx_def"*, i32 }
+%"struct real_value" = type { i32, [5 x i32] }
+%"struct rtx_def" = type { i16, i8, i8, %"union u" }
+%"union u" = type { %"struct real_value" }
+
+define i32 @variable_union(i8** nocapture %slot, i8* nocapture %data) nounwind {
+entry:
+ br i1 undef, label %"4.thread", label %"3"
+
+"4.thread": ; preds = %entry
+ unreachable
+
+"3": ; preds = %entry
+ br i1 undef, label %"19", label %"20"
+
+"19": ; preds = %"3"
+ unreachable
+
+"20": ; preds = %"3"
+ br i1 undef, label %"56.preheader", label %dv_onepart_p.exit
+
+dv_onepart_p.exit: ; preds = %"20"
+ unreachable
+
+"56.preheader": ; preds = %"20"
+ br label %"56"
+
+"50": ; preds = %"57"
+ br label %"56"
+
+"56": ; preds = %"50", %"56.preheader"
+ br i1 undef, label %"57", label %"58"
+
+"57": ; preds = %"56"
+ br i1 undef, label %"50", label %"58"
+
+"58": ; preds = %"57", %"56"
+ br i1 undef, label %"62", label %"63"
+
+"62": ; preds = %"58"
+ unreachable
+
+"63": ; preds = %"58"
+ br i1 undef, label %"67", label %"66"
+
+"66": ; preds = %"63"
+ br label %"67"
+
+"67": ; preds = %"66", %"63"
+ br label %"68"
+
+"68": ; preds = %"161", %"67"
+ br i1 undef, label %"153", label %"161"
+
+"153": ; preds = %"68"
+ br i1 undef, label %"160", label %bb.nph46
+
+bb.nph46: ; preds = %"153"
+ br label %"154"
+
+"154": ; preds = %"154", %bb.nph46
+ %0 = phi %"struct location_chain_def"** [ undef, %bb.nph46 ], [ %1, %"154" ] ; <%"struct location_chain_def"**> [#uses=1]
+ %1 = bitcast i8* undef to %"struct location_chain_def"** ; <%"struct location_chain_def"**> [#uses=1]
+ store %"struct location_chain_def"* undef, %"struct location_chain_def"** %0, align 4
+ br i1 undef, label %"160", label %"154"
+
+"160": ; preds = %"154", %"153"
+ br label %"161"
+
+"161": ; preds = %"160", %"68"
+ br label %"68"
+}
diff --git a/test/CodeGen/Generic/SwitchLowering.ll b/test/CodeGen/X86/SwitchLowering.ll
index 29a0e82bf59f1..29a0e82bf59f1 100644
--- a/test/CodeGen/Generic/SwitchLowering.ll
+++ b/test/CodeGen/X86/SwitchLowering.ll
diff --git a/test/CodeGen/X86/add-trick32.ll b/test/CodeGen/X86/add-trick32.ll
deleted file mode 100644
index e86045db0abb0..0000000000000
--- a/test/CodeGen/X86/add-trick32.ll
+++ /dev/null
@@ -1,11 +0,0 @@
-; RUN: llc < %s -march=x86 > %t
-; RUN: not grep add %t
-; RUN: grep subl %t | count 1
-
-; The immediate can be encoded in a smaller way if the
-; instruction is a sub instead of an add.
-
-define i32 @foo(i32 inreg %a) nounwind {
- %b = add i32 %a, 128
- ret i32 %b
-}
diff --git a/test/CodeGen/X86/add-trick64.ll b/test/CodeGen/X86/add-trick64.ll
deleted file mode 100644
index 2f1fceea5ea49..0000000000000
--- a/test/CodeGen/X86/add-trick64.ll
+++ /dev/null
@@ -1,15 +0,0 @@
-; RUN: llc < %s -march=x86-64 > %t
-; RUN: not grep add %t
-; RUN: grep subq %t | count 2
-
-; The immediate can be encoded in a smaller way if the
-; instruction is a sub instead of an add.
-
-define i64 @foo(i64 inreg %a) nounwind {
- %b = add i64 %a, 2147483648
- ret i64 %b
-}
-define i64 @bar(i64 inreg %a) nounwind {
- %b = add i64 %a, 128
- ret i64 %b
-}
diff --git a/test/CodeGen/X86/add-with-overflow.ll b/test/CodeGen/X86/add-with-overflow.ll
deleted file mode 100644
index 0f705dc020883..0000000000000
--- a/test/CodeGen/X86/add-with-overflow.ll
+++ /dev/null
@@ -1,75 +0,0 @@
-; RUN: llc < %s -march=x86 | grep {jo} | count 2
-; RUN: llc < %s -march=x86 | grep {jb} | count 2
-; RUN: llc < %s -march=x86 -O0 | grep {jo} | count 2
-; RUN: llc < %s -march=x86 -O0 | grep {jb} | count 2
-
-@ok = internal constant [4 x i8] c"%d\0A\00"
-@no = internal constant [4 x i8] c"no\0A\00"
-
-define i1 @func1(i32 %v1, i32 %v2) nounwind {
-entry:
- %t = call {i32, i1} @llvm.sadd.with.overflow.i32(i32 %v1, i32 %v2)
- %sum = extractvalue {i32, i1} %t, 0
- %obit = extractvalue {i32, i1} %t, 1
- br i1 %obit, label %overflow, label %normal
-
-normal:
- %t1 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @ok, i32 0, i32 0), i32 %sum ) nounwind
- ret i1 true
-
-overflow:
- %t2 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @no, i32 0, i32 0) ) nounwind
- ret i1 false
-}
-
-define i1 @func2(i32 %v1, i32 %v2) nounwind {
-entry:
- %t = call {i32, i1} @llvm.uadd.with.overflow.i32(i32 %v1, i32 %v2)
- %sum = extractvalue {i32, i1} %t, 0
- %obit = extractvalue {i32, i1} %t, 1
- br i1 %obit, label %carry, label %normal
-
-normal:
- %t1 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @ok, i32 0, i32 0), i32 %sum ) nounwind
- ret i1 true
-
-carry:
- %t2 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @no, i32 0, i32 0) ) nounwind
- ret i1 false
-}
-
-define i1 @func3() nounwind {
-entry:
- %t = call {i32, i1} @llvm.sadd.with.overflow.i32(i32 0, i32 0)
- %sum = extractvalue {i32, i1} %t, 0
- %obit = extractvalue {i32, i1} %t, 1
- br i1 %obit, label %carry, label %normal
-
-normal:
- %t1 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @ok, i32 0, i32 0), i32 %sum ) nounwind
- ret i1 true
-
-carry:
- %t2 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @no, i32 0, i32 0) ) nounwind
- ret i1 false
-}
-
-define i1 @func4() nounwind {
-entry:
- %t = call {i32, i1} @llvm.uadd.with.overflow.i32(i32 0, i32 0)
- %sum = extractvalue {i32, i1} %t, 0
- %obit = extractvalue {i32, i1} %t, 1
- br i1 %obit, label %carry, label %normal
-
-normal:
- %t1 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @ok, i32 0, i32 0), i32 %sum ) nounwind
- ret i1 true
-
-carry:
- %t2 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @no, i32 0, i32 0) ) nounwind
- ret i1 false
-}
-
-declare i32 @printf(i8*, ...) nounwind
-declare {i32, i1} @llvm.sadd.with.overflow.i32(i32, i32)
-declare {i32, i1} @llvm.uadd.with.overflow.i32(i32, i32)
diff --git a/test/CodeGen/X86/add.ll b/test/CodeGen/X86/add.ll
new file mode 100644
index 0000000000000..3991a6849f3ed
--- /dev/null
+++ b/test/CodeGen/X86/add.ll
@@ -0,0 +1,94 @@
+; RUN: llc < %s -march=x86 | FileCheck %s -check-prefix=X32
+; RUN: llc < %s -march=x86-64 | FileCheck %s -check-prefix=X64
+
+; The immediate can be encoded in a smaller way if the
+; instruction is a sub instead of an add.
+
+define i32 @test1(i32 inreg %a) nounwind {
+ %b = add i32 %a, 128
+ ret i32 %b
+; X32: subl $-128, %eax
+; X64: subl $-128,
+}
+define i64 @test2(i64 inreg %a) nounwind {
+ %b = add i64 %a, 2147483648
+ ret i64 %b
+; X32: addl $-2147483648, %eax
+; X64: subq $-2147483648,
+}
+define i64 @test3(i64 inreg %a) nounwind {
+ %b = add i64 %a, 128
+ ret i64 %b
+
+; X32: addl $128, %eax
+; X64: subq $-128,
+}
+
+define i1 @test4(i32 %v1, i32 %v2, i32* %X) nounwind {
+entry:
+ %t = call {i32, i1} @llvm.sadd.with.overflow.i32(i32 %v1, i32 %v2)
+ %sum = extractvalue {i32, i1} %t, 0
+ %obit = extractvalue {i32, i1} %t, 1
+ br i1 %obit, label %overflow, label %normal
+
+normal:
+ store i32 0, i32* %X
+ br label %overflow
+
+overflow:
+ ret i1 false
+
+; X32: test4:
+; X32: addl
+; X32-NEXT: jo
+
+; X64: test4:
+; X64: addl %esi, %edi
+; X64-NEXT: jo
+}
+
+define i1 @test5(i32 %v1, i32 %v2, i32* %X) nounwind {
+entry:
+ %t = call {i32, i1} @llvm.uadd.with.overflow.i32(i32 %v1, i32 %v2)
+ %sum = extractvalue {i32, i1} %t, 0
+ %obit = extractvalue {i32, i1} %t, 1
+ br i1 %obit, label %carry, label %normal
+
+normal:
+ store i32 0, i32* %X
+ br label %carry
+
+carry:
+ ret i1 false
+
+; X32: test5:
+; X32: addl
+; X32-NEXT: jb
+
+; X64: test5:
+; X64: addl %esi, %edi
+; X64-NEXT: jb
+}
+
+declare {i32, i1} @llvm.sadd.with.overflow.i32(i32, i32)
+declare {i32, i1} @llvm.uadd.with.overflow.i32(i32, i32)
+
+
+define i64 @test6(i64 %A, i32 %B) nounwind {
+ %tmp12 = zext i32 %B to i64 ; <i64> [#uses=1]
+ %tmp3 = shl i64 %tmp12, 32 ; <i64> [#uses=1]
+ %tmp5 = add i64 %tmp3, %A ; <i64> [#uses=1]
+ ret i64 %tmp5
+
+; X32: test6:
+; X32: movl 12(%esp), %edx
+; X32-NEXT: addl 8(%esp), %edx
+; X32-NEXT: movl 4(%esp), %eax
+; X32-NEXT: ret
+
+; X64: test6:
+; X64: shlq $32, %rsi
+; X64: leaq (%rsi,%rdi), %rax
+; X64: ret
+}
+
diff --git a/test/CodeGen/X86/addr-label-difference.ll b/test/CodeGen/X86/addr-label-difference.ll
index 547d6b57657a7..be0908aa1a9d7 100644
--- a/test/CodeGen/X86/addr-label-difference.ll
+++ b/test/CodeGen/X86/addr-label-difference.ll
@@ -9,14 +9,18 @@ target triple = "i386-apple-darwin10.0"
define void @test(i32 %i) nounwind ssp {
entry:
+ call void @test(i32 1)
br label %foo
-foo: ; preds = %indirectgoto, %indirectgoto, %indirectgoto, %indirectgoto, %indirectgoto
+foo:
+ call void @test(i32 1)
br label %bar
-bar: ; preds = %foo, %indirectgoto
+bar:
+ call void @test(i32 1)
br label %hack
-hack: ; preds = %bar, %indirectgoto
+hack:
+ call void @test(i32 1)
ret void
}
diff --git a/test/CodeGen/X86/aliases.ll b/test/CodeGen/X86/aliases.ll
index 0b26859b04c73..3020eb3c7192b 100644
--- a/test/CodeGen/X86/aliases.ll
+++ b/test/CodeGen/X86/aliases.ll
@@ -1,5 +1,6 @@
; RUN: llc < %s -mtriple=i686-pc-linux-gnu -asm-verbose=false -o %t
-; RUN: grep set %t | count 7
+; RUN: grep { = } %t | count 7
+; RUN: grep set %t | count 16
; RUN: grep globl %t | count 6
; RUN: grep weak %t | count 1
; RUN: grep hidden %t | count 1
diff --git a/test/CodeGen/X86/aligned-comm.ll b/test/CodeGen/X86/aligned-comm.ll
index c0f3a81c4d67e..7715869ed99cf 100644
--- a/test/CodeGen/X86/aligned-comm.ll
+++ b/test/CodeGen/X86/aligned-comm.ll
@@ -1,8 +1,6 @@
; RUN: llc < %s -march=x86
; RUN: llc < %s -mtriple=i386-apple-darwin10 | grep {array,16512,7}
; RUN: llc < %s -mtriple=i386-apple-darwin9 | grep {array,16512,7}
-; RUN: llc < %s -mtriple=i386-apple-darwin8 | not grep {7}
-; Darwin 9+ should get alignment on common symbols. Darwin8 does
-; not support this.
+; Darwin 9+ should get alignment on common symbols.
@array = common global [4128 x i32] zeroinitializer, align 128
diff --git a/test/CodeGen/X86/call-push.ll b/test/CodeGen/X86/call-push.ll
index 7bae5cd2464d5..02cbccc1a492f 100644
--- a/test/CodeGen/X86/call-push.ll
+++ b/test/CodeGen/X86/call-push.ll
@@ -1,9 +1,14 @@
-; RUN: llc < %s -march=x86 -disable-fp-elim | grep subl | count 1
+; RUN: llc < %s -mtriple=i386-apple-darwin -disable-fp-elim | FileCheck %s
%struct.decode_t = type { i8, i8, i8, i8, i16, i8, i8, %struct.range_t** }
%struct.range_t = type { float, float, i32, i32, i32, [0 x i8] }
-define i32 @decode_byte(%struct.decode_t* %decode) {
+define i32 @decode_byte(%struct.decode_t* %decode) nounwind {
+; CHECK: decode_byte:
+; CHECK: pushl
+; CHECK: popl
+; CHECK: popl
+; CHECK: jmp
entry:
%tmp2 = getelementptr %struct.decode_t* %decode, i32 0, i32 4 ; <i16*> [#uses=1]
%tmp23 = bitcast i16* %tmp2 to i32* ; <i32*> [#uses=1]
diff --git a/test/CodeGen/X86/twoaddr-delete.ll b/test/CodeGen/X86/codegen-dce.ll
index 77e3c75c6dd0b..d83efaf577661 100644
--- a/test/CodeGen/X86/twoaddr-delete.ll
+++ b/test/CodeGen/X86/codegen-dce.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86 -stats |& grep {twoaddrinstr} | grep {Number of dead instructions deleted}
+; RUN: llc < %s -march=x86 -stats |& grep {codegen-dce} | grep {Number of dead instructions deleted}
%struct.anon = type { [3 x double], double, %struct.node*, [64 x %struct.bnode*], [64 x %struct.bnode*] }
%struct.bnode = type { i16, double, [3 x double], i32, i32, [3 x double], [3 x double], [3 x double], double, %struct.bnode*, %struct.bnode* }
diff --git a/test/CodeGen/X86/convert-2-addr-3-addr-inc64.ll b/test/CodeGen/X86/convert-2-addr-3-addr-inc64.ll
index 337f1b2a8e75f..8e38fe309f7c5 100644
--- a/test/CodeGen/X86/convert-2-addr-3-addr-inc64.ll
+++ b/test/CodeGen/X86/convert-2-addr-3-addr-inc64.ll
@@ -1,19 +1,20 @@
; RUN: llc < %s -march=x86-64 -o %t -stats -info-output-file - | \
-; RUN: grep {asm-printer} | grep {Number of machine instrs printed} | grep 5
+; RUN: grep {asm-printer} | grep {Number of machine instrs printed} | grep 10
; RUN: grep {leal 1(\%rsi),} %t
-define fastcc zeroext i8 @fullGtU(i32 %i1, i32 %i2) nounwind optsize {
+define fastcc zeroext i8 @fullGtU(i32 %i1, i32 %i2, i8* %ptr) nounwind optsize {
entry:
%0 = add i32 %i2, 1 ; <i32> [#uses=1]
%1 = sext i32 %0 to i64 ; <i64> [#uses=1]
- %2 = getelementptr i8* null, i64 %1 ; <i8*> [#uses=1]
+ %2 = getelementptr i8* %ptr, i64 %1 ; <i8*> [#uses=1]
%3 = load i8* %2, align 1 ; <i8> [#uses=1]
%4 = icmp eq i8 0, %3 ; <i1> [#uses=1]
br i1 %4, label %bb3, label %bb34
bb3: ; preds = %entry
%5 = add i32 %i2, 4 ; <i32> [#uses=0]
- ret i8 0
+ %6 = trunc i32 %5 to i8
+ ret i8 %6
bb34: ; preds = %entry
ret i8 0
diff --git a/test/CodeGen/X86/dllexport.ll b/test/CodeGen/X86/dllexport.ll
new file mode 100644
index 0000000000000..2c699bfb0db42
--- /dev/null
+++ b/test/CodeGen/X86/dllexport.ll
@@ -0,0 +1,12 @@
+; RUN: llc < %s | FileCheck %s
+; PR2936
+
+target triple = "i386-mingw32"
+
+define dllexport x86_fastcallcc i32 @foo() nounwind {
+entry:
+ ret i32 0
+}
+
+; CHECK: .section .drectve
+; CHECK: -export:@foo@0 \ No newline at end of file
diff --git a/test/CodeGen/X86/fastcall-correct-mangling.ll b/test/CodeGen/X86/fastcall-correct-mangling.ll
index 2b48f5f371d9d..33b18bb8cc6ec 100644
--- a/test/CodeGen/X86/fastcall-correct-mangling.ll
+++ b/test/CodeGen/X86/fastcall-correct-mangling.ll
@@ -1,9 +1,9 @@
-; RUN: llc < %s -mtriple=i386-unknown-mingw32 | \
-; RUN: grep {@12}
+; RUN: llc < %s -mtriple=i386-unknown-mingw32 | FileCheck %s
; Check that a fastcall function gets correct mangling
define x86_fastcallcc void @func(i64 %X, i8 %Y, i8 %G, i16 %Z) {
+; CHECK: @func@20:
ret void
}
diff --git a/test/CodeGen/X86/full-lsr.ll b/test/CodeGen/X86/full-lsr.ll
index 3bd58b65be498..ff9b1b0b6a5a8 100644
--- a/test/CodeGen/X86/full-lsr.ll
+++ b/test/CodeGen/X86/full-lsr.ll
@@ -1,12 +1,7 @@
; RUN: llc < %s -march=x86 >%t
-; TODO: Enhance full lsr mode to get this:
-; RUNX: grep {addl \\\$4,} %t | count 3
-; RUNX: not grep {,%} %t
-
-; For now, it should find this, which is still pretty good:
-; RUN: not grep {addl \\\$4,} %t
-; RUN: grep {,%} %t | count 6
+; RUN: grep {addl \\\$4,} %t | count 3
+; RUN: not grep {,%} %t
define void @foo(float* nocapture %A, float* nocapture %B, float* nocapture %C, i32 %N) nounwind {
entry:
diff --git a/test/CodeGen/X86/ins_subreg_coalesce-3.ll b/test/CodeGen/X86/ins_subreg_coalesce-3.ll
index e44308583297c..627edc51c18d7 100644
--- a/test/CodeGen/X86/ins_subreg_coalesce-3.ll
+++ b/test/CodeGen/X86/ins_subreg_coalesce-3.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86-64 | grep mov | count 11
+; RUN: llc < %s -march=x86-64 | grep mov | count 5
%struct.COMPOSITE = type { i8, i16, i16 }
%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
diff --git a/test/CodeGen/X86/iv-users-in-other-loops.ll b/test/CodeGen/X86/iv-users-in-other-loops.ll
index c695c29e068f5..408fb20b8d891 100644
--- a/test/CodeGen/X86/iv-users-in-other-loops.ll
+++ b/test/CodeGen/X86/iv-users-in-other-loops.ll
@@ -1,11 +1,11 @@
; RUN: llc < %s -march=x86-64 -o %t
-; RUN: grep inc %t | count 1
+; RUN: not grep inc %t
; RUN: grep dec %t | count 2
; RUN: grep addq %t | count 13
; RUN: not grep addb %t
-; RUN: grep leaq %t | count 9
-; RUN: grep leal %t | count 3
-; RUN: grep movq %t | count 5
+; RUN: not grep leaq %t
+; RUN: not grep leal %t
+; RUN: not grep movq %t
; IV users in each of the loops from other loops shouldn't cause LSR
; to insert new induction variables. Previously it would create a
diff --git a/test/CodeGen/X86/loop-strength-reduce-2.ll b/test/CodeGen/X86/loop-strength-reduce-2.ll
index 30b5114349480..b546462b684fb 100644
--- a/test/CodeGen/X86/loop-strength-reduce-2.ll
+++ b/test/CodeGen/X86/loop-strength-reduce-2.ll
@@ -1,11 +1,24 @@
-; RUN: llc < %s -march=x86 -relocation-model=pic | \
-; RUN: grep {, 4} | count 1
-; RUN: llc < %s -march=x86 | not grep lea
+; RUN: llc < %s -march=x86 -relocation-model=pic | FileCheck %s -check-prefix=PIC
+; RUN: llc < %s -march=x86 -relocation-model=static | FileCheck %s -check-prefix=STATIC
;
; Make sure the common loop invariant A is hoisted up to preheader,
; since too many registers are needed to subsume it into the addressing modes.
; It's safe to sink A in when it's not pic.
+; PIC: align
+; PIC: movl $4, -4([[REG:%e[a-z]+]])
+; PIC: movl $5, ([[REG]])
+; PIC: addl $4, [[REG]]
+; PIC: decl {{%e[[a-z]+}}
+; PIC: jne
+
+; STATIC: align
+; STATIC: movl $4, -4(%ecx)
+; STATIC: movl $5, (%ecx)
+; STATIC: addl $4, %ecx
+; STATIC: decl %eax
+; STATIC: jne
+
@A = global [16 x [16 x i32]] zeroinitializer, align 32 ; <[16 x [16 x i32]]*> [#uses=2]
define void @test(i32 %row, i32 %N.in) nounwind {
diff --git a/test/CodeGen/X86/loop-strength-reduce-3.ll b/test/CodeGen/X86/loop-strength-reduce-3.ll
index 70c91340c9488..b1c9fb9c0772b 100644
--- a/test/CodeGen/X86/loop-strength-reduce-3.ll
+++ b/test/CodeGen/X86/loop-strength-reduce-3.ll
@@ -1,8 +1,11 @@
-; RUN: llc < %s -mtriple=i386-apple-darwin -relocation-model=dynamic-no-pic | \
-; RUN: grep {A+} | count 2
-;
-; Make sure the common loop invariant A is not hoisted up to preheader,
-; since it can be subsumed it into the addressing modes.
+; RUN: llc < %s -mtriple=i386-apple-darwin -relocation-model=dynamic-no-pic | FileCheck %s
+
+; CHECK: align
+; CHECK: movl $4, -4(%ecx)
+; CHECK: movl $5, (%ecx)
+; CHECK: addl $4, %ecx
+; CHECK: decl %eax
+; CHECK: jne
@A = global [16 x [16 x i32]] zeroinitializer, align 32 ; <[16 x [16 x i32]]*> [#uses=2]
diff --git a/test/CodeGen/X86/loop-strength-reduce.ll b/test/CodeGen/X86/loop-strength-reduce.ll
index 4cb56ca9ed245..42c6ac4983dbe 100644
--- a/test/CodeGen/X86/loop-strength-reduce.ll
+++ b/test/CodeGen/X86/loop-strength-reduce.ll
@@ -1,8 +1,11 @@
-; RUN: llc < %s -march=x86 -relocation-model=static | \
-; RUN: grep {A+} | count 2
-;
-; Make sure the common loop invariant A is not hoisted up to preheader,
-; since it can be subsumed into the addressing mode in all uses.
+; RUN: llc < %s -march=x86 -relocation-model=static | FileCheck %s
+
+; CHECK: align
+; CHECK: movl $4, -4(%ecx)
+; CHECK: movl $5, (%ecx)
+; CHECK: addl $4, %ecx
+; CHECK: decl %eax
+; CHECK: jne
@A = internal global [16 x [16 x i32]] zeroinitializer, align 32 ; <[16 x [16 x i32]]*> [#uses=2]
diff --git a/test/CodeGen/X86/loop-strength-reduce4.ll b/test/CodeGen/X86/loop-strength-reduce4.ll
index 07e46eca75e9f..6c0eb8c0df93d 100644
--- a/test/CodeGen/X86/loop-strength-reduce4.ll
+++ b/test/CodeGen/X86/loop-strength-reduce4.ll
@@ -1,5 +1,19 @@
-; RUN: llc < %s -march=x86 | grep cmp | grep 64
-; RUN: llc < %s -march=x86 | not grep inc
+; RUN: llc < %s -march=x86 -relocation-model=static -mtriple=i686-apple-darwin | FileCheck %s -check-prefix=STATIC
+; RUN: llc < %s -march=x86 -relocation-model=pic | FileCheck %s -check-prefix=PIC
+
+; By starting the IV at -64 instead of 0, a cmp is eliminated,
+; as the flags from the add can be used directly.
+
+; STATIC: movl $-64, %ecx
+
+; STATIC: movl %eax, _state+76(%ecx)
+; STATIC: addl $16, %ecx
+; STATIC: jne
+
+; In PIC mode the symbol can't be folded, so the change-compare-stride
+; trick applies.
+
+; PIC: cmpl $64
@state = external global [0 x i32] ; <[0 x i32]*> [#uses=4]
@S = external global [0 x i32] ; <[0 x i32]*> [#uses=4]
diff --git a/test/CodeGen/X86/loop-strength-reduce8.ll b/test/CodeGen/X86/loop-strength-reduce8.ll
index e14cd8a99e35e..6b2247d1d6197 100644
--- a/test/CodeGen/X86/loop-strength-reduce8.ll
+++ b/test/CodeGen/X86/loop-strength-reduce8.ll
@@ -1,4 +1,10 @@
-; RUN: llc < %s -mtriple=i386-apple-darwin | grep leal | not grep 16
+; RUN: llc < %s -mtriple=i386-apple-darwin | FileCheck %s
+
+; CHECK: leal 16(%eax), %edx
+; CHECK: align
+; CHECK: addl $4, %edx
+; CHECK: decl %ecx
+; CHECK: jne LBB1_2
%struct.CUMULATIVE_ARGS = type { i32, i32, i32, i32, i32, i32, i32 }
%struct.bitmap_element = type { %struct.bitmap_element*, %struct.bitmap_element*, i32, [2 x i64] }
diff --git a/test/CodeGen/X86/lsr-reuse-trunc.ll b/test/CodeGen/X86/lsr-reuse-trunc.ll
new file mode 100644
index 0000000000000..d1d714491faab
--- /dev/null
+++ b/test/CodeGen/X86/lsr-reuse-trunc.ll
@@ -0,0 +1,59 @@
+; RUN: llc < %s -march=x86-64 | FileCheck %s
+
+; Full strength reduction wouldn't reduce register pressure, so LSR should
+; stick with indexing here.
+
+; CHECK: movaps (%rsi,%rax,4), %xmm3
+; CHECK: movaps %xmm3, (%rdi,%rax,4)
+; CHECK: addq $4, %rax
+; CHECK: cmpl %eax, (%rdx)
+; CHECK-NEXT: jg
+
+define void @vvfloorf(float* nocapture %y, float* nocapture %x, i32* nocapture %n) nounwind {
+entry:
+ %0 = load i32* %n, align 4
+ %1 = icmp sgt i32 %0, 0
+ br i1 %1, label %bb, label %return
+
+bb:
+ %indvar = phi i64 [ %indvar.next, %bb ], [ 0, %entry ]
+ %tmp = shl i64 %indvar, 2
+ %scevgep = getelementptr float* %y, i64 %tmp
+ %scevgep9 = bitcast float* %scevgep to <4 x float>*
+ %scevgep10 = getelementptr float* %x, i64 %tmp
+ %scevgep1011 = bitcast float* %scevgep10 to <4 x float>*
+ %2 = load <4 x float>* %scevgep1011, align 16
+ %3 = bitcast <4 x float> %2 to <4 x i32>
+ %4 = and <4 x i32> %3, <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647>
+ %5 = bitcast <4 x i32> %4 to <4 x float>
+ %6 = and <4 x i32> %3, <i32 -2147483648, i32 -2147483648, i32 -2147483648, i32 -2147483648>
+ %7 = tail call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %5, <4 x float> <float 8.388608e+06, float 8.388608e+06, float 8.388608e+06, float 8.388608e+06>, i8 5) nounwind
+ %tmp.i4 = bitcast <4 x float> %7 to <4 x i32>
+ %8 = xor <4 x i32> %tmp.i4, <i32 -1, i32 -1, i32 -1, i32 -1>
+ %9 = and <4 x i32> %8, <i32 1258291200, i32 1258291200, i32 1258291200, i32 1258291200>
+ %10 = or <4 x i32> %9, %6
+ %11 = bitcast <4 x i32> %10 to <4 x float>
+ %12 = fadd <4 x float> %2, %11
+ %13 = fsub <4 x float> %12, %11
+ %14 = tail call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %2, <4 x float> %13, i8 1) nounwind
+ %15 = bitcast <4 x float> %14 to <4 x i32>
+ %16 = tail call <4 x float> @llvm.x86.sse2.cvtdq2ps(<4 x i32> %15) nounwind readnone
+ %17 = fadd <4 x float> %13, %16
+ %tmp.i = bitcast <4 x float> %17 to <4 x i32>
+ %18 = or <4 x i32> %tmp.i, %6
+ %19 = bitcast <4 x i32> %18 to <4 x float>
+ store <4 x float> %19, <4 x float>* %scevgep9, align 16
+ %tmp12 = add i64 %tmp, 4
+ %tmp13 = trunc i64 %tmp12 to i32
+ %20 = load i32* %n, align 4
+ %21 = icmp sgt i32 %20, %tmp13
+ %indvar.next = add i64 %indvar, 1
+ br i1 %21, label %bb, label %return
+
+return:
+ ret void
+}
+
+declare <4 x float> @llvm.x86.sse.cmp.ps(<4 x float>, <4 x float>, i8) nounwind readnone
+
+declare <4 x float> @llvm.x86.sse2.cvtdq2ps(<4 x i32>) nounwind readnone
diff --git a/test/CodeGen/X86/lsr-reuse.ll b/test/CodeGen/X86/lsr-reuse.ll
new file mode 100644
index 0000000000000..7f2b8cc8f8320
--- /dev/null
+++ b/test/CodeGen/X86/lsr-reuse.ll
@@ -0,0 +1,386 @@
+; RUN: llc < %s -march=x86-64 -O3 | FileCheck %s
+target datalayout = "e-p:64:64:64"
+target triple = "x86_64-unknown-unknown"
+
+; Full strength reduction reduces register pressure from 5 to 4 here.
+; Instruction selection should use the FLAGS value from the dec for
+; the branch. Scheduling should push the adds upwards.
+
+; CHECK: full_me_0:
+; CHECK: movsd (%rsi), %xmm0
+; CHECK: addq $8, %rsi
+; CHECK: mulsd (%rdx), %xmm0
+; CHECK: addq $8, %rdx
+; CHECK: movsd %xmm0, (%rdi)
+; CHECK: addq $8, %rdi
+; CHECK: decq %rcx
+; CHECK: jne
+
+define void @full_me_0(double* nocapture %A, double* nocapture %B, double* nocapture %C, i64 %n) nounwind {
+entry:
+ %t0 = icmp sgt i64 %n, 0
+ br i1 %t0, label %loop, label %return
+
+loop:
+ %i = phi i64 [ %i.next, %loop ], [ 0, %entry ]
+ %Ai = getelementptr inbounds double* %A, i64 %i
+ %Bi = getelementptr inbounds double* %B, i64 %i
+ %Ci = getelementptr inbounds double* %C, i64 %i
+ %t1 = load double* %Bi
+ %t2 = load double* %Ci
+ %m = fmul double %t1, %t2
+ store double %m, double* %Ai
+ %i.next = add nsw i64 %i, 1
+ %exitcond = icmp eq i64 %i.next, %n
+ br i1 %exitcond, label %return, label %loop
+
+return:
+ ret void
+}
+
+; Mostly-full strength reduction means we do full strength reduction on all
+; except for the offsets.
+;
+; Given a choice between constant offsets -2048 and 2048, choose the negative
+; value, because at boundary conditions it has a smaller encoding.
+; TODO: That's an over-general heuristic. It would be better for the target
+; to indicate what the encoding cost would be. Then using a 2048 offset
+; would be better on x86-64, since the start value would be 0 instead of
+; 2048.
+
+; CHECK: mostly_full_me_0:
+; CHECK: movsd -2048(%rsi), %xmm0
+; CHECK: mulsd -2048(%rdx), %xmm0
+; CHECK: movsd %xmm0, -2048(%rdi)
+; CHECK: movsd (%rsi), %xmm0
+; CHECK: addq $8, %rsi
+; CHECK: divsd (%rdx), %xmm0
+; CHECK: addq $8, %rdx
+; CHECK: movsd %xmm0, (%rdi)
+; CHECK: addq $8, %rdi
+; CHECK: decq %rcx
+; CHECK: jne
+
+define void @mostly_full_me_0(double* nocapture %A, double* nocapture %B, double* nocapture %C, i64 %n) nounwind {
+entry:
+ %t0 = icmp sgt i64 %n, 0
+ br i1 %t0, label %loop, label %return
+
+loop:
+ %i = phi i64 [ %i.next, %loop ], [ 0, %entry ]
+ %Ai = getelementptr inbounds double* %A, i64 %i
+ %Bi = getelementptr inbounds double* %B, i64 %i
+ %Ci = getelementptr inbounds double* %C, i64 %i
+ %t1 = load double* %Bi
+ %t2 = load double* %Ci
+ %m = fmul double %t1, %t2
+ store double %m, double* %Ai
+ %j = add i64 %i, 256
+ %Aj = getelementptr inbounds double* %A, i64 %j
+ %Bj = getelementptr inbounds double* %B, i64 %j
+ %Cj = getelementptr inbounds double* %C, i64 %j
+ %t3 = load double* %Bj
+ %t4 = load double* %Cj
+ %o = fdiv double %t3, %t4
+ store double %o, double* %Aj
+ %i.next = add nsw i64 %i, 1
+ %exitcond = icmp eq i64 %i.next, %n
+ br i1 %exitcond, label %return, label %loop
+
+return:
+ ret void
+}
+
+; A minor variation on mostly_full_me_0.
+; Prefer to start the indvar at 0.
+
+; CHECK: mostly_full_me_1:
+; CHECK: movsd (%rsi), %xmm0
+; CHECK: mulsd (%rdx), %xmm0
+; CHECK: movsd %xmm0, (%rdi)
+; CHECK: movsd -2048(%rsi), %xmm0
+; CHECK: addq $8, %rsi
+; CHECK: divsd -2048(%rdx), %xmm0
+; CHECK: addq $8, %rdx
+; CHECK: movsd %xmm0, -2048(%rdi)
+; CHECK: addq $8, %rdi
+; CHECK: decq %rcx
+; CHECK: jne
+
+define void @mostly_full_me_1(double* nocapture %A, double* nocapture %B, double* nocapture %C, i64 %n) nounwind {
+entry:
+ %t0 = icmp sgt i64 %n, 0
+ br i1 %t0, label %loop, label %return
+
+loop:
+ %i = phi i64 [ %i.next, %loop ], [ 0, %entry ]
+ %Ai = getelementptr inbounds double* %A, i64 %i
+ %Bi = getelementptr inbounds double* %B, i64 %i
+ %Ci = getelementptr inbounds double* %C, i64 %i
+ %t1 = load double* %Bi
+ %t2 = load double* %Ci
+ %m = fmul double %t1, %t2
+ store double %m, double* %Ai
+ %j = sub i64 %i, 256
+ %Aj = getelementptr inbounds double* %A, i64 %j
+ %Bj = getelementptr inbounds double* %B, i64 %j
+ %Cj = getelementptr inbounds double* %C, i64 %j
+ %t3 = load double* %Bj
+ %t4 = load double* %Cj
+ %o = fdiv double %t3, %t4
+ store double %o, double* %Aj
+ %i.next = add nsw i64 %i, 1
+ %exitcond = icmp eq i64 %i.next, %n
+ br i1 %exitcond, label %return, label %loop
+
+return:
+ ret void
+}
+
+; A slightly less minor variation on mostly_full_me_0.
+
+; CHECK: mostly_full_me_2:
+; CHECK: movsd (%rsi), %xmm0
+; CHECK: mulsd (%rdx), %xmm0
+; CHECK: movsd %xmm0, (%rdi)
+; CHECK: movsd -4096(%rsi), %xmm0
+; CHECK: addq $8, %rsi
+; CHECK: divsd -4096(%rdx), %xmm0
+; CHECK: addq $8, %rdx
+; CHECK: movsd %xmm0, -4096(%rdi)
+; CHECK: addq $8, %rdi
+; CHECK: decq %rcx
+; CHECK: jne
+
+define void @mostly_full_me_2(double* nocapture %A, double* nocapture %B, double* nocapture %C, i64 %n) nounwind {
+entry:
+ %t0 = icmp sgt i64 %n, 0
+ br i1 %t0, label %loop, label %return
+
+loop:
+ %i = phi i64 [ %i.next, %loop ], [ 0, %entry ]
+ %k = add i64 %i, 256
+ %Ak = getelementptr inbounds double* %A, i64 %k
+ %Bk = getelementptr inbounds double* %B, i64 %k
+ %Ck = getelementptr inbounds double* %C, i64 %k
+ %t1 = load double* %Bk
+ %t2 = load double* %Ck
+ %m = fmul double %t1, %t2
+ store double %m, double* %Ak
+ %j = sub i64 %i, 256
+ %Aj = getelementptr inbounds double* %A, i64 %j
+ %Bj = getelementptr inbounds double* %B, i64 %j
+ %Cj = getelementptr inbounds double* %C, i64 %j
+ %t3 = load double* %Bj
+ %t4 = load double* %Cj
+ %o = fdiv double %t3, %t4
+ store double %o, double* %Aj
+ %i.next = add nsw i64 %i, 1
+ %exitcond = icmp eq i64 %i.next, %n
+ br i1 %exitcond, label %return, label %loop
+
+return:
+ ret void
+}
+
+; In this test, the counting IV exit value is used, so full strength reduction
+; would not reduce register pressure. IndVarSimplify ought to simplify such
+; cases away, but it's useful here to verify that LSR's register pressure
+; heuristics are working as expected.
+
+; CHECK: count_me_0:
+; CHECK: movsd (%rsi,%rax,8), %xmm0
+; CHECK: mulsd (%rdx,%rax,8), %xmm0
+; CHECK: movsd %xmm0, (%rdi,%rax,8)
+; CHECK: incq %rax
+; CHECK: cmpq %rax, %rcx
+; CHECK: jne
+
+define i64 @count_me_0(double* nocapture %A, double* nocapture %B, double* nocapture %C, i64 %n) nounwind {
+entry:
+ %t0 = icmp sgt i64 %n, 0
+ br i1 %t0, label %loop, label %return
+
+loop:
+ %i = phi i64 [ %i.next, %loop ], [ 0, %entry ]
+ %Ai = getelementptr inbounds double* %A, i64 %i
+ %Bi = getelementptr inbounds double* %B, i64 %i
+ %Ci = getelementptr inbounds double* %C, i64 %i
+ %t1 = load double* %Bi
+ %t2 = load double* %Ci
+ %m = fmul double %t1, %t2
+ store double %m, double* %Ai
+ %i.next = add nsw i64 %i, 1
+ %exitcond = icmp eq i64 %i.next, %n
+ br i1 %exitcond, label %return, label %loop
+
+return:
+ %q = phi i64 [ 0, %entry ], [ %i.next, %loop ]
+ ret i64 %q
+}
+
+; In this test, the trip count value is used, so full strength reduction
+; would not reduce register pressure.
+; (though it would reduce register pressure inside the loop...)
+
+; CHECK: count_me_1:
+; CHECK: movsd (%rsi,%rax,8), %xmm0
+; CHECK: mulsd (%rdx,%rax,8), %xmm0
+; CHECK: movsd %xmm0, (%rdi,%rax,8)
+; CHECK: incq %rax
+; CHECK: cmpq %rax, %rcx
+; CHECK: jne
+
+define i64 @count_me_1(double* nocapture %A, double* nocapture %B, double* nocapture %C, i64 %n) nounwind {
+entry:
+ %t0 = icmp sgt i64 %n, 0
+ br i1 %t0, label %loop, label %return
+
+loop:
+ %i = phi i64 [ %i.next, %loop ], [ 0, %entry ]
+ %Ai = getelementptr inbounds double* %A, i64 %i
+ %Bi = getelementptr inbounds double* %B, i64 %i
+ %Ci = getelementptr inbounds double* %C, i64 %i
+ %t1 = load double* %Bi
+ %t2 = load double* %Ci
+ %m = fmul double %t1, %t2
+ store double %m, double* %Ai
+ %i.next = add nsw i64 %i, 1
+ %exitcond = icmp eq i64 %i.next, %n
+ br i1 %exitcond, label %return, label %loop
+
+return:
+ %q = phi i64 [ 0, %entry ], [ %n, %loop ]
+ ret i64 %q
+}
+
+; Full strength reduction doesn't save any registers here because the
+; loop tripcount is a constant.
+
+; CHECK: count_me_2:
+; CHECK: movl $10, %eax
+; CHECK: align
+; CHECK: BB7_1:
+; CHECK: movsd -40(%rdi,%rax,8), %xmm0
+; CHECK: addsd -40(%rsi,%rax,8), %xmm0
+; CHECK: movsd %xmm0, -40(%rdx,%rax,8)
+; CHECK: movsd (%rdi,%rax,8), %xmm0
+; CHECK: subsd (%rsi,%rax,8), %xmm0
+; CHECK: movsd %xmm0, (%rdx,%rax,8)
+; CHECK: incq %rax
+; CHECK: cmpq $5010, %rax
+; CHECK: jne
+
+define void @count_me_2(double* nocapture %A, double* nocapture %B, double* nocapture %C) nounwind {
+entry:
+ br label %loop
+
+loop:
+ %i = phi i64 [ 0, %entry ], [ %i.next, %loop ]
+ %i5 = add i64 %i, 5
+ %Ai = getelementptr double* %A, i64 %i5
+ %t2 = load double* %Ai
+ %Bi = getelementptr double* %B, i64 %i5
+ %t4 = load double* %Bi
+ %t5 = fadd double %t2, %t4
+ %Ci = getelementptr double* %C, i64 %i5
+ store double %t5, double* %Ci
+ %i10 = add i64 %i, 10
+ %Ai10 = getelementptr double* %A, i64 %i10
+ %t9 = load double* %Ai10
+ %Bi10 = getelementptr double* %B, i64 %i10
+ %t11 = load double* %Bi10
+ %t12 = fsub double %t9, %t11
+ %Ci10 = getelementptr double* %C, i64 %i10
+ store double %t12, double* %Ci10
+ %i.next = add i64 %i, 1
+ %exitcond = icmp eq i64 %i.next, 5000
+ br i1 %exitcond, label %return, label %loop
+
+return:
+ ret void
+}
+
+; This should be fully strength-reduced to reduce register pressure.
+
+; CHECK: full_me_1:
+; CHECK: align
+; CHECK: BB8_1:
+; CHECK: movsd (%rdi), %xmm0
+; CHECK: addsd (%rsi), %xmm0
+; CHECK: movsd %xmm0, (%rdx)
+; CHECK: movsd 40(%rdi), %xmm0
+; CHECK: addq $8, %rdi
+; CHECK: subsd 40(%rsi), %xmm0
+; CHECK: addq $8, %rsi
+; CHECK: movsd %xmm0, 40(%rdx)
+; CHECK: addq $8, %rdx
+; CHECK: decq %rcx
+; CHECK: jne
+
+define void @full_me_1(double* nocapture %A, double* nocapture %B, double* nocapture %C, i64 %n) nounwind {
+entry:
+ br label %loop
+
+loop:
+ %i = phi i64 [ 0, %entry ], [ %i.next, %loop ]
+ %i5 = add i64 %i, 5
+ %Ai = getelementptr double* %A, i64 %i5
+ %t2 = load double* %Ai
+ %Bi = getelementptr double* %B, i64 %i5
+ %t4 = load double* %Bi
+ %t5 = fadd double %t2, %t4
+ %Ci = getelementptr double* %C, i64 %i5
+ store double %t5, double* %Ci
+ %i10 = add i64 %i, 10
+ %Ai10 = getelementptr double* %A, i64 %i10
+ %t9 = load double* %Ai10
+ %Bi10 = getelementptr double* %B, i64 %i10
+ %t11 = load double* %Bi10
+ %t12 = fsub double %t9, %t11
+ %Ci10 = getelementptr double* %C, i64 %i10
+ store double %t12, double* %Ci10
+ %i.next = add i64 %i, 1
+ %exitcond = icmp eq i64 %i.next, %n
+ br i1 %exitcond, label %return, label %loop
+
+return:
+ ret void
+}
+
+; This is a variation on full_me_0 in which the 0,+,1 induction variable
+; has a non-address use, pinning that value in a register.
+
+; CHECK: count_me_3:
+; CHECK: call
+; CHECK: movsd (%r15,%r13,8), %xmm0
+; CHECK: mulsd (%r14,%r13,8), %xmm0
+; CHECK: movsd %xmm0, (%r12,%r13,8)
+; CHECK: incq %r13
+; CHECK: cmpq %r13, %rbx
+; CHECK: jne
+
+declare void @use(i64)
+
+define void @count_me_3(double* nocapture %A, double* nocapture %B, double* nocapture %C, i64 %n) nounwind {
+entry:
+ %t0 = icmp sgt i64 %n, 0
+ br i1 %t0, label %loop, label %return
+
+loop:
+ %i = phi i64 [ %i.next, %loop ], [ 0, %entry ]
+ call void @use(i64 %i)
+ %Ai = getelementptr inbounds double* %A, i64 %i
+ %Bi = getelementptr inbounds double* %B, i64 %i
+ %Ci = getelementptr inbounds double* %C, i64 %i
+ %t1 = load double* %Bi
+ %t2 = load double* %Ci
+ %m = fmul double %t1, %t2
+ store double %m, double* %Ai
+ %i.next = add nsw i64 %i, 1
+ %exitcond = icmp eq i64 %i.next, %n
+ br i1 %exitcond, label %return, label %loop
+
+return:
+ ret void
+}
diff --git a/test/CodeGen/X86/masked-iv-safe.ll b/test/CodeGen/X86/masked-iv-safe.ll
index bc493bd8f724f..0b4d73a683af9 100644
--- a/test/CodeGen/X86/masked-iv-safe.ll
+++ b/test/CodeGen/X86/masked-iv-safe.ll
@@ -169,7 +169,7 @@ loop:
%indvar.i24 = and i64 %indvar, 16777215
%t3 = getelementptr double* %d, i64 %indvar.i24
%t4 = load double* %t3
- %t5 = fmul double %t4, 2.3
+ %t5 = fdiv double %t4, 2.3
store double %t5, double* %t3
%t6 = getelementptr double* %d, i64 %indvar
%t7 = load double* %t6
@@ -199,7 +199,7 @@ loop:
%indvar.i24 = ashr i64 %s1, 24
%t3 = getelementptr double* %d, i64 %indvar.i24
%t4 = load double* %t3
- %t5 = fmul double %t4, 2.3
+ %t5 = fdiv double %t4, 2.3
store double %t5, double* %t3
%t6 = getelementptr double* %d, i64 %indvar
%t7 = load double* %t6
@@ -229,7 +229,7 @@ loop:
%indvar.i24 = ashr i64 %s1, 24
%t3 = getelementptr double* %d, i64 %indvar.i24
%t4 = load double* %t3
- %t5 = fmul double %t4, 2.3
+ %t5 = fdiv double %t4, 2.3
store double %t5, double* %t3
%t6 = getelementptr double* %d, i64 %indvar
%t7 = load double* %t6
diff --git a/test/CodeGen/X86/nancvt.ll b/test/CodeGen/X86/nancvt.ll
index 0b56644f125a4..82b73319ad149 100644
--- a/test/CodeGen/X86/nancvt.ll
+++ b/test/CodeGen/X86/nancvt.ll
@@ -16,6 +16,8 @@ target triple = "i686-apple-darwin8"
@.str = internal constant [10 x i8] c"%08x%08x\0A\00" ; <[10 x i8]*> [#uses=2]
@.str1 = internal constant [6 x i8] c"%08x\0A\00" ; <[6 x i8]*> [#uses=2]
+@var = external global i32
+
define i32 @main() {
entry:
%retval = alloca i32, align 4 ; <i32*> [#uses=1]
@@ -50,7 +52,8 @@ bb: ; preds = %bb23
%tmp17 = ashr i64 %tmp16, %.cast ; <i64> [#uses=1]
%tmp1718 = trunc i64 %tmp17 to i32 ; <i32> [#uses=1]
%tmp19 = getelementptr [10 x i8]* @.str, i32 0, i32 0 ; <i8*> [#uses=1]
- %tmp20 = call i32 (i8*, ...)* @printf( i8* %tmp19, i32 %tmp1718, i32 %tmp13 ) ; <i32> [#uses=0]
+ volatile store i32 %tmp1718, i32* @var
+ volatile store i32 %tmp13, i32* @var
%tmp21 = load i32* %i, align 4 ; <i32> [#uses=1]
%tmp22 = add i32 %tmp21, 1 ; <i32> [#uses=1]
store i32 %tmp22, i32* %i, align 4
@@ -83,7 +86,7 @@ bb28: ; preds = %bb46
%tmp3940 = bitcast float* %tmp39 to i32* ; <i32*> [#uses=1]
%tmp41 = load i32* %tmp3940, align 4 ; <i32> [#uses=1]
%tmp42 = getelementptr [6 x i8]* @.str1, i32 0, i32 0 ; <i8*> [#uses=1]
- %tmp43 = call i32 (i8*, ...)* @printf( i8* %tmp42, i32 %tmp41 ) ; <i32> [#uses=0]
+ volatile store i32 %tmp41, i32* @var
%tmp44 = load i32* %i, align 4 ; <i32> [#uses=1]
%tmp45 = add i32 %tmp44, 1 ; <i32> [#uses=1]
store i32 %tmp45, i32* %i, align 4
@@ -124,7 +127,8 @@ bb52: ; preds = %bb78
%tmp72 = ashr i64 %tmp70, %.cast71 ; <i64> [#uses=1]
%tmp7273 = trunc i64 %tmp72 to i32 ; <i32> [#uses=1]
%tmp74 = getelementptr [10 x i8]* @.str, i32 0, i32 0 ; <i8*> [#uses=1]
- %tmp75 = call i32 (i8*, ...)* @printf( i8* %tmp74, i32 %tmp7273, i32 %tmp66 ) ; <i32> [#uses=0]
+ volatile store i32 %tmp7273, i32* @var
+ volatile store i32 %tmp66, i32* @var
%tmp76 = load i32* %i, align 4 ; <i32> [#uses=1]
%tmp77 = add i32 %tmp76, 1 ; <i32> [#uses=1]
store i32 %tmp77, i32* %i, align 4
@@ -157,7 +161,7 @@ bb84: ; preds = %bb101
%tmp9495 = bitcast float* %tmp94 to i32* ; <i32*> [#uses=1]
%tmp96 = load i32* %tmp9495, align 4 ; <i32> [#uses=1]
%tmp97 = getelementptr [6 x i8]* @.str1, i32 0, i32 0 ; <i8*> [#uses=1]
- %tmp98 = call i32 (i8*, ...)* @printf( i8* %tmp97, i32 %tmp96 ) ; <i32> [#uses=0]
+ volatile store i32 %tmp96, i32* @var
%tmp99 = load i32* %i, align 4 ; <i32> [#uses=1]
%tmp100 = add i32 %tmp99, 1 ; <i32> [#uses=1]
store i32 %tmp100, i32* %i, align 4
@@ -177,5 +181,3 @@ return: ; preds = %bb106
%retval107 = load i32* %retval ; <i32> [#uses=1]
ret i32 %retval107
}
-
-declare i32 @printf(i8*, ...)
diff --git a/test/CodeGen/X86/personality.ll b/test/CodeGen/X86/personality.ll
index 5acf04cc06c10..ce57e8fce6f2a 100644
--- a/test/CodeGen/X86/personality.ll
+++ b/test/CodeGen/X86/personality.ll
@@ -39,7 +39,7 @@ declare void @__gxx_personality_v0()
declare void @__cxa_end_catch()
; X64: Leh_frame_common_begin:
-; X64: .long ___gxx_personality_v0@GOTPCREL+4
+; X64: .long (___gxx_personality_v0@GOTPCREL)+4
; X32: Leh_frame_common_begin:
; X32: .long L___gxx_personality_v0$non_lazy_ptr-
diff --git a/test/CodeGen/Generic/phi-immediate-factoring.ll b/test/CodeGen/X86/phi-immediate-factoring.ll
index 9f9f92115c797..9f9f92115c797 100644
--- a/test/CodeGen/Generic/phi-immediate-factoring.ll
+++ b/test/CodeGen/X86/phi-immediate-factoring.ll
diff --git a/test/CodeGen/X86/phys-reg-local-regalloc.ll b/test/CodeGen/X86/phys-reg-local-regalloc.ll
index e5e2d4bb230d5..045841e7245b1 100644
--- a/test/CodeGen/X86/phys-reg-local-regalloc.ll
+++ b/test/CodeGen/X86/phys-reg-local-regalloc.ll
@@ -1,4 +1,6 @@
; RUN: llc < %s -march=x86 -mtriple=i386-apple-darwin9 -regalloc=local | FileCheck %s
+; RUN: llc -O0 < %s -march=x86 -mtriple=i386-apple-darwin9 -regalloc=local | FileCheck %s
+; CHECKed instructions should be the same with or without -O0.
@.str = private constant [12 x i8] c"x + y = %i\0A\00", align 1 ; <[12 x i8]*> [#uses=1]
diff --git a/test/CodeGen/X86/pic.ll b/test/CodeGen/X86/pic.ll
index e886ba06b7089..d3c28a055aee7 100644
--- a/test/CodeGen/X86/pic.ll
+++ b/test/CodeGen/X86/pic.ll
@@ -190,7 +190,7 @@ bb12:
; LINUX: .L8$pb:
; LINUX: addl $_GLOBAL_OFFSET_TABLE_+(.Lpicbaseref8-.L8$pb),
; LINUX: addl .LJTI8_0@GOTOFF(
-; LINUX: jmpl *%ecx
+; LINUX: jmpl *
; LINUX: .LJTI8_0:
; LINUX: .long .LBB8_2@GOTOFF
diff --git a/test/CodeGen/X86/pr1505b.ll b/test/CodeGen/X86/pr1505b.ll
index 12736cda4cd28..6a08dae51f8ae 100644
--- a/test/CodeGen/X86/pr1505b.ll
+++ b/test/CodeGen/X86/pr1505b.ll
@@ -1,5 +1,5 @@
-; RUN: llc < %s -mcpu=i486 | grep fstpl | count 4
-; RUN: llc < %s -mcpu=i486 | grep fstps | count 3
+; RUN: llc < %s -mcpu=i486 | grep fstpl | count 5
+; RUN: llc < %s -mcpu=i486 | grep fstps | count 2
; PR1505
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64"
diff --git a/test/CodeGen/X86/pr3495.ll b/test/CodeGen/X86/pr3495.ll
index 1795970d353ee..e84a84f59bb76 100644
--- a/test/CodeGen/X86/pr3495.ll
+++ b/test/CodeGen/X86/pr3495.ll
@@ -1,8 +1,7 @@
; RUN: llc < %s -march=x86 -stats |& grep {Number of loads added} | grep 2
; RUN: llc < %s -march=x86 -stats |& grep {Number of register spills} | grep 1
-; RUN: llc < %s -march=x86 -stats |& grep {Number of machine instrs printed} | grep 38
+; RUN: llc < %s -march=x86 -stats |& grep {Number of machine instrs printed} | grep 34
; PR3495
-; The loop reversal kicks in once here, resulting in one fewer instruction.
target triple = "i386-pc-linux-gnu"
@x = external global [8 x i32], align 32 ; <[8 x i32]*> [#uses=1]
diff --git a/test/CodeGen/X86/pre-split8.ll b/test/CodeGen/X86/pre-split8.ll
index ea4b9496b3c37..0684bd036ce24 100644
--- a/test/CodeGen/X86/pre-split8.ll
+++ b/test/CodeGen/X86/pre-split8.ll
@@ -20,7 +20,7 @@ bb: ; preds = %bb9.i, %entry
bb9.i: ; preds = %bb
%2 = fsub double %.rle4, %0 ; <double> [#uses=0]
- %3 = tail call double @asin(double 0.000000e+00) nounwind readonly ; <double> [#uses=0]
+ %3 = tail call double @asin(double %.rle4) nounwind readonly ; <double> [#uses=0]
%4 = fmul double 0.000000e+00, %0 ; <double> [#uses=1]
%5 = tail call double @tan(double 0.000000e+00) nounwind readonly ; <double> [#uses=0]
%6 = fmul double %4, 0.000000e+00 ; <double> [#uses=1]
diff --git a/test/CodeGen/X86/pre-split9.ll b/test/CodeGen/X86/pre-split9.ll
index c27d925d43e4b..86dda33533f73 100644
--- a/test/CodeGen/X86/pre-split9.ll
+++ b/test/CodeGen/X86/pre-split9.ll
@@ -22,7 +22,7 @@ bb: ; preds = %bb9.i, %entry
bb9.i: ; preds = %bb
%2 = fsub double %.rle4, %0 ; <double> [#uses=0]
- %3 = tail call double @asin(double 0.000000e+00) nounwind readonly ; <double> [#uses=0]
+ %3 = tail call double @asin(double %.rle4) nounwind readonly ; <double> [#uses=0]
%4 = tail call double @sin(double 0.000000e+00) nounwind readonly ; <double> [#uses=1]
%5 = fmul double %4, %0 ; <double> [#uses=1]
%6 = tail call double @tan(double 0.000000e+00) nounwind readonly ; <double> [#uses=0]
diff --git a/test/CodeGen/X86/ptrtoint-constexpr.ll b/test/CodeGen/X86/ptrtoint-constexpr.ll
index 7e33e7916c89c..dd9790568abee 100644
--- a/test/CodeGen/X86/ptrtoint-constexpr.ll
+++ b/test/CodeGen/X86/ptrtoint-constexpr.ll
@@ -6,3 +6,9 @@
; CHECK: .quad r&4294967295
@r = global %union.x { i64 ptrtoint (%union.x* @r to i64) }, align 4
+
+; CHECK: .globl x
+; CHECK: x:
+; CHECK: .quad 3
+
+@x = global i64 mul (i64 3, i64 ptrtoint (i2* getelementptr (i2* null, i64 1) to i64))
diff --git a/test/CodeGen/X86/scalar_widen_div.ll b/test/CodeGen/X86/scalar_widen_div.ll
index fc67e4417c4a8..77f320f1056e7 100644
--- a/test/CodeGen/X86/scalar_widen_div.ll
+++ b/test/CodeGen/X86/scalar_widen_div.ll
@@ -152,3 +152,32 @@ define <5 x i64> @test_ulong_rem(<5 x i64> %num, <5 x i64> %rem) {
%rem.r = urem <5 x i64> %num, %rem
ret <5 x i64> %rem.r
}
+
+define void @test_int_div(<3 x i32>* %dest, <3 x i32>* %old, i32 %n) {
+; CHECK: idivl
+; CHECK: idivl
+; CHECK: idivl
+; CHECK-NOT: idivl
+; CHECK: ret
+entry:
+ %cmp13 = icmp sgt i32 %n, 0
+ br i1 %cmp13, label %bb.nph, label %for.end
+
+bb.nph:
+ br label %for.body
+
+for.body:
+ %i.014 = phi i32 [ 0, %bb.nph ], [ %inc, %for.body ]
+ %arrayidx11 = getelementptr <3 x i32>* %dest, i32 %i.014
+ %tmp4 = load <3 x i32>* %arrayidx11 ; <<3 x i32>> [#uses=1]
+ %arrayidx7 = getelementptr inbounds <3 x i32>* %old, i32 %i.014
+ %tmp8 = load <3 x i32>* %arrayidx7 ; <<3 x i32>> [#uses=1]
+ %div = sdiv <3 x i32> %tmp4, %tmp8
+ store <3 x i32> %div, <3 x i32>* %arrayidx11
+ %inc = add nsw i32 %i.014, 1
+ %exitcond = icmp eq i32 %inc, %n
+ br i1 %exitcond, label %for.end, label %for.body
+
+for.end: ; preds = %for.body, %entry
+ ret void
+}
diff --git a/test/CodeGen/X86/sext-i1.ll b/test/CodeGen/X86/sext-i1.ll
new file mode 100644
index 0000000000000..21c418d534e91
--- /dev/null
+++ b/test/CodeGen/X86/sext-i1.ll
@@ -0,0 +1,63 @@
+; RUN: llc < %s -march=x86 | FileCheck %s -check-prefix=32
+; RUN: llc < %s -march=x86-64 | FileCheck %s -check-prefix=64
+; rdar://7573216
+; PR6146
+
+define i32 @t1(i32 %x) nounwind readnone ssp {
+entry:
+; 32: t1:
+; 32: cmpl $1
+; 32: sbbl
+
+; 64: t1:
+; 64: cmpl $1
+; 64: sbbl
+ %0 = icmp eq i32 %x, 0
+ %iftmp.0.0 = select i1 %0, i32 -1, i32 0
+ ret i32 %iftmp.0.0
+}
+
+define i32 @t2(i32 %x) nounwind readnone ssp {
+entry:
+; 32: t2:
+; 32: cmpl $1
+; 32: sbbl
+
+; 64: t2:
+; 64: cmpl $1
+; 64: sbbl
+ %0 = icmp eq i32 %x, 0
+ %iftmp.0.0 = sext i1 %0 to i32
+ ret i32 %iftmp.0.0
+}
+
+%struct.zbookmark = type { i64, i64 }
+%struct.zstream = type { }
+
+define i32 @t3() nounwind readonly {
+entry:
+; 32: t3:
+; 32: cmpl $1
+; 32: sbbl
+; 32: cmpl
+; 32: xorl
+
+; 64: t3:
+; 64: cmpl $1
+; 64: sbbq
+; 64: cmpq
+; 64: xorl
+ %not.tobool = icmp eq i32 undef, 0 ; <i1> [#uses=2]
+ %cond = sext i1 %not.tobool to i32 ; <i32> [#uses=1]
+ %conv = sext i1 %not.tobool to i64 ; <i64> [#uses=1]
+ %add13 = add i64 0, %conv ; <i64> [#uses=1]
+ %cmp = icmp ult i64 undef, %add13 ; <i1> [#uses=1]
+ br i1 %cmp, label %if.then, label %if.end
+
+if.then: ; preds = %entry
+ br label %if.end
+
+if.end: ; preds = %if.then, %entry
+ %xor27 = xor i32 undef, %cond ; <i32> [#uses=0]
+ ret i32 0
+}
diff --git a/test/CodeGen/X86/sse3.ll b/test/CodeGen/X86/sse3.ll
index 5550d263389ac..b2af7c947d981 100644
--- a/test/CodeGen/X86/sse3.ll
+++ b/test/CodeGen/X86/sse3.ll
@@ -63,10 +63,10 @@ define <8 x i16> @t4(<8 x i16> %A, <8 x i16> %B) nounwind {
ret <8 x i16> %tmp
; X64: t4:
; X64: pextrw $7, %xmm0, %eax
-; X64: pshufhw $100, %xmm0, %xmm1
-; X64: pinsrw $1, %eax, %xmm1
+; X64: pshufhw $100, %xmm0, %xmm2
+; X64: pinsrw $1, %eax, %xmm2
; X64: pextrw $1, %xmm0, %eax
-; X64: movaps %xmm1, %xmm0
+; X64: movaps %xmm2, %xmm0
; X64: pinsrw $4, %eax, %xmm0
; X64: ret
}
diff --git a/test/CodeGen/X86/stack-color-with-reg.ll b/test/CodeGen/X86/stack-color-with-reg.ll
index 7d85818d46b95..42e7a394d8bc0 100644
--- a/test/CodeGen/X86/stack-color-with-reg.ll
+++ b/test/CodeGen/X86/stack-color-with-reg.ll
@@ -1,5 +1,5 @@
; RUN: llc < %s -mtriple=x86_64-apple-darwin10 -relocation-model=pic -disable-fp-elim -color-ss-with-regs -stats -info-output-file - > %t
-; RUN: grep stackcoloring %t | grep "stack slot refs replaced with reg refs" | grep 14
+; RUN: grep stackcoloring %t | grep "stack slot refs replaced with reg refs" | grep 8
type { [62 x %struct.Bitvec*] } ; type %0
type { i8* } ; type %1
diff --git a/test/CodeGen/X86/stdcall.ll b/test/CodeGen/X86/stdcall.ll
new file mode 100644
index 0000000000000..70204bcf47455
--- /dev/null
+++ b/test/CodeGen/X86/stdcall.ll
@@ -0,0 +1,16 @@
+; RUN: llc < %s | FileCheck %s
+; PR5851
+
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f80:128:128-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32"
+target triple = "i386-mingw32"
+
+%0 = type { void (...)* }
+
+@B = global %0 { void (...)* bitcast (void ()* @MyFunc to void (...)*) }, align 4
+; CHECK: _B:
+; CHECK: .long _MyFunc@0
+
+define internal x86_stdcallcc void @MyFunc() nounwind {
+entry:
+ ret void
+}
diff --git a/test/CodeGen/Generic/switch-crit-edge-constant.ll b/test/CodeGen/X86/switch-crit-edge-constant.ll
index 1f2ab0dbcbe96..1f2ab0dbcbe96 100644
--- a/test/CodeGen/Generic/switch-crit-edge-constant.ll
+++ b/test/CodeGen/X86/switch-crit-edge-constant.ll
diff --git a/test/CodeGen/X86/tailcall1.ll b/test/CodeGen/X86/tailcall1.ll
index 42f8cdd384130..f7ff5d5308d66 100644
--- a/test/CodeGen/X86/tailcall1.ll
+++ b/test/CodeGen/X86/tailcall1.ll
@@ -1,11 +1,14 @@
; RUN: llc < %s -march=x86 -tailcallopt | grep TAILCALL | count 5
+; With -tailcallopt, CodeGen guarantees a tail call optimization
+; for all of these.
+
declare fastcc i32 @tailcallee(i32 %a1, i32 %a2, i32 %a3, i32 %a4)
define fastcc i32 @tailcaller(i32 %in1, i32 %in2) nounwind {
entry:
- %tmp11 = tail call fastcc i32 @tailcallee(i32 %in1, i32 %in2, i32 %in1, i32 %in2)
- ret i32 %tmp11
+ %tmp11 = tail call fastcc i32 @tailcallee(i32 %in1, i32 %in2, i32 %in1, i32 %in2)
+ ret i32 %tmp11
}
declare fastcc i8* @alias_callee()
diff --git a/test/CodeGen/X86/tailcall2.ll b/test/CodeGen/X86/tailcall2.ll
new file mode 100644
index 0000000000000..80bab619c16f7
--- /dev/null
+++ b/test/CodeGen/X86/tailcall2.ll
@@ -0,0 +1,197 @@
+; RUN: llc < %s -march=x86 -asm-verbose=false | FileCheck %s -check-prefix=32
+; RUN: llc < %s -march=x86-64 -asm-verbose=false | FileCheck %s -check-prefix=64
+
+define void @t1(i32 %x) nounwind ssp {
+entry:
+; 32: t1:
+; 32: jmp {{_?}}foo
+
+; 64: t1:
+; 64: jmp {{_?}}foo
+ tail call void @foo() nounwind
+ ret void
+}
+
+declare void @foo()
+
+define void @t2() nounwind ssp {
+entry:
+; 32: t2:
+; 32: jmp {{_?}}foo2
+
+; 64: t2:
+; 64: jmp {{_?}}foo2
+ %0 = tail call i32 @foo2() nounwind
+ ret void
+}
+
+declare i32 @foo2()
+
+define void @t3() nounwind ssp {
+entry:
+; 32: t3:
+; 32: jmp {{_?}}foo3
+
+; 64: t3:
+; 64: jmp {{_?}}foo3
+ %0 = tail call i32 @foo3() nounwind
+ ret void
+}
+
+declare i32 @foo3()
+
+define void @t4(void (i32)* nocapture %x) nounwind ssp {
+entry:
+; 32: t4:
+; 32: call *
+; FIXME: gcc can generate a tailcall for this. But it's tricky.
+
+; 64: t4:
+; 64-NOT: call
+; 64: jmpq *
+ tail call void %x(i32 0) nounwind
+ ret void
+}
+
+define void @t5(void ()* nocapture %x) nounwind ssp {
+entry:
+; 32: t5:
+; 32-NOT: call
+; 32: jmpl *
+
+; 64: t5:
+; 64-NOT: call
+; 64: jmpq *
+ tail call void %x() nounwind
+ ret void
+}
+
+define i32 @t6(i32 %x) nounwind ssp {
+entry:
+; 32: t6:
+; 32: call {{_?}}t6
+; 32: jmp {{_?}}bar
+
+; 64: t6:
+; 64: jmp {{_?}}t6
+; 64: jmp {{_?}}bar
+ %0 = icmp slt i32 %x, 10
+ br i1 %0, label %bb, label %bb1
+
+bb:
+ %1 = add nsw i32 %x, -1
+ %2 = tail call i32 @t6(i32 %1) nounwind ssp
+ ret i32 %2
+
+bb1:
+ %3 = tail call i32 @bar(i32 %x) nounwind
+ ret i32 %3
+}
+
+declare i32 @bar(i32)
+
+define i32 @t7(i32 %a, i32 %b, i32 %c) nounwind ssp {
+entry:
+; 32: t7:
+; 32: jmp {{_?}}bar2
+
+; 64: t7:
+; 64: jmp {{_?}}bar2
+ %0 = tail call i32 @bar2(i32 %a, i32 %b, i32 %c) nounwind
+ ret i32 %0
+}
+
+declare i32 @bar2(i32, i32, i32)
+
+define signext i16 @t8() nounwind ssp {
+entry:
+; 32: t8:
+; 32: call {{_?}}bar3
+
+; 64: t8:
+; 64: callq {{_?}}bar3
+ %0 = tail call signext i16 @bar3() nounwind ; <i16> [#uses=1]
+ ret i16 %0
+}
+
+declare signext i16 @bar3()
+
+define signext i16 @t9(i32 (i32)* nocapture %x) nounwind ssp {
+entry:
+; 32: t9:
+; 32: call *
+
+; 64: t9:
+; 64: callq *
+ %0 = bitcast i32 (i32)* %x to i16 (i32)*
+ %1 = tail call signext i16 %0(i32 0) nounwind
+ ret i16 %1
+}
+
+define void @t10() nounwind ssp {
+entry:
+; 32: t10:
+; 32: call
+
+; 64: t10:
+; 64: callq
+ %0 = tail call i32 @foo4() noreturn nounwind
+ unreachable
+}
+
+declare i32 @foo4()
+
+define i32 @t11(i32 %x, i32 %y, i32 %z.0, i32 %z.1, i32 %z.2) nounwind ssp {
+; In 32-bit mode, it's emitting a bunch of dead loads that are not being
+; eliminated currently.
+
+; 32: t11:
+; 32-NOT: subl ${{[0-9]+}}, %esp
+; 32: jne
+; 32-NOT: movl
+; 32-NOT: addl ${{[0-9]+}}, %esp
+; 32: jmp {{_?}}foo5
+
+; 64: t11:
+; 64-NOT: subq ${{[0-9]+}}, %esp
+; 64-NOT: addq ${{[0-9]+}}, %esp
+; 64: jmp {{_?}}foo5
+entry:
+ %0 = icmp eq i32 %x, 0
+ br i1 %0, label %bb6, label %bb
+
+bb:
+ %1 = tail call i32 @foo5(i32 %x, i32 %y, i32 %z.0, i32 %z.1, i32 %z.2) nounwind
+ ret i32 %1
+
+bb6:
+ ret i32 0
+}
+
+declare i32 @foo5(i32, i32, i32, i32, i32)
+
+%struct.t = type { i32, i32, i32, i32, i32 }
+
+define i32 @t12(i32 %x, i32 %y, %struct.t* byval align 4 %z) nounwind ssp {
+; 32: t12:
+; 32-NOT: subl ${{[0-9]+}}, %esp
+; 32-NOT: addl ${{[0-9]+}}, %esp
+; 32: jmp {{_?}}foo6
+
+; 64: t12:
+; 64-NOT: subq ${{[0-9]+}}, %esp
+; 64-NOT: addq ${{[0-9]+}}, %esp
+; 64: jmp {{_?}}foo6
+entry:
+ %0 = icmp eq i32 %x, 0
+ br i1 %0, label %bb2, label %bb
+
+bb:
+ %1 = tail call i32 @foo6(i32 %x, i32 %y, %struct.t* byval align 4 %z) nounwind
+ ret i32 %1
+
+bb2:
+ ret i32 0
+}
+
+declare i32 @foo6(i32, i32, %struct.t* byval align 4)
diff --git a/test/CodeGen/X86/tailcallfp2.ll b/test/CodeGen/X86/tailcallfp2.ll
index be4f96cfb5e64..3841f518976b7 100644
--- a/test/CodeGen/X86/tailcallfp2.ll
+++ b/test/CodeGen/X86/tailcallfp2.ll
@@ -2,7 +2,7 @@
declare i32 @putchar(i32)
-define fastcc i32 @checktail(i32 %x, i32* %f, i32 %g) {
+define fastcc i32 @checktail(i32 %x, i32* %f, i32 %g) nounwind {
%tmp1 = icmp sgt i32 %x, 0
br i1 %tmp1, label %if-then, label %if-else
@@ -18,8 +18,8 @@ if-else:
}
-define i32 @main() {
+define i32 @main() nounwind {
%f = bitcast i32 (i32, i32*, i32)* @checktail to i32*
%res = tail call fastcc i32 @checktail( i32 10, i32* %f,i32 10)
ret i32 %res
-} \ No newline at end of file
+}
diff --git a/test/CodeGen/X86/twoaddr-coalesce.ll b/test/CodeGen/X86/twoaddr-coalesce.ll
index d0e13f61f2d05..4c37225ce027b 100644
--- a/test/CodeGen/X86/twoaddr-coalesce.ll
+++ b/test/CodeGen/X86/twoaddr-coalesce.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86 | grep mov | count 5
+; RUN: llc < %s -march=x86 | grep mov | count 4
; rdar://6523745
@"\01LC" = internal constant [4 x i8] c"%d\0A\00" ; <[4 x i8]*> [#uses=1]
diff --git a/test/CodeGen/X86/vsplit-and.ll b/test/CodeGen/X86/vsplit-and.ll
new file mode 100644
index 0000000000000..a247c6eb00d73
--- /dev/null
+++ b/test/CodeGen/X86/vsplit-and.ll
@@ -0,0 +1,22 @@
+; RUN: llc < %s -march=x86 -disable-mmx | FileCheck %s
+
+
+define void @t(<2 x i64>* %dst, <2 x i64> %src1, <2 x i64> %src2) nounwind readonly {
+; CHECK: andb
+ %cmp1 = icmp ne <2 x i64> %src1, zeroinitializer
+ %cmp2 = icmp ne <2 x i64> %src2, zeroinitializer
+ %t1 = and <2 x i1> %cmp1, %cmp2
+ %t2 = sext <2 x i1> %t1 to <2 x i64>
+ store <2 x i64> %t2, <2 x i64>* %dst
+ ret void
+}
+
+define void @t2(<3 x i64>* %dst, <3 x i64> %src1, <3 x i64> %src2) nounwind readonly {
+; CHECK: andb
+ %cmp1 = icmp ne <3 x i64> %src1, zeroinitializer
+ %cmp2 = icmp ne <3 x i64> %src2, zeroinitializer
+ %t1 = and <3 x i1> %cmp1, %cmp2
+ %t2 = sext <3 x i1> %t1 to <3 x i64>
+ store <3 x i64> %t2, <3 x i64>* %dst
+ ret void
+}
diff --git a/test/CodeGen/X86/widen_cast-2.ll b/test/CodeGen/X86/widen_cast-2.ll
index e5d2c6a61e297..1e626a2f88228 100644
--- a/test/CodeGen/X86/widen_cast-2.ll
+++ b/test/CodeGen/X86/widen_cast-2.ll
@@ -2,10 +2,8 @@
; CHECK: pextrd
; CHECK: pextrd
; CHECK: movd
-; CHECK: pextrd
-; CHECK: pextrd
-; CHECK: pextrd
-; CHECK: movd
+; CHECK: movaps
+
; bitcast v14i16 to v7i32
diff --git a/test/CodeGen/X86/widen_load-1.ll b/test/CodeGen/X86/widen_load-1.ll
index 8a970bff498db..d397645f193f8 100644
--- a/test/CodeGen/X86/widen_load-1.ll
+++ b/test/CodeGen/X86/widen_load-1.ll
@@ -3,7 +3,7 @@
; This load should be before the call, not after.
-; CHECK: movq compl+128(%rip), %xmm0
+; CHECK: movaps compl+128(%rip), %xmm0
; CHECK: movaps %xmm0, (%rsp)
; CHECK: callq killcommon
diff --git a/test/CodeGen/X86/widen_load-2.ll b/test/CodeGen/X86/widen_load-2.ll
new file mode 100644
index 0000000000000..11383fa308298
--- /dev/null
+++ b/test/CodeGen/X86/widen_load-2.ll
@@ -0,0 +1,155 @@
+; RUN: llc < %s -o - -march=x86-64 -mattr=+sse42 -disable-mmx | FileCheck %s
+
+; Test based on pr5626 to load/store
+;
+
+%i32vec3 = type <3 x i32>
+define void @add3i32(%i32vec3* sret %ret, %i32vec3* %ap, %i32vec3* %bp) {
+; CHECK: movaps
+; CHECK: paddd
+; CHECK: pextrd
+; CHECK: movq
+ %a = load %i32vec3* %ap, align 16
+ %b = load %i32vec3* %bp, align 16
+ %x = add %i32vec3 %a, %b
+ store %i32vec3 %x, %i32vec3* %ret, align 16
+ ret void
+}
+
+define void @add3i32_2(%i32vec3* sret %ret, %i32vec3* %ap, %i32vec3* %bp) {
+; CHECK: movq
+; CHECK: pinsrd
+; CHECK: movq
+; CHECK: pinsrd
+; CHECK: paddd
+; CHECK: pextrd
+; CHECK: movq
+ %a = load %i32vec3* %ap
+ %b = load %i32vec3* %bp
+ %x = add %i32vec3 %a, %b
+ store %i32vec3 %x, %i32vec3* %ret
+ ret void
+}
+
+%i32vec7 = type <7 x i32>
+define void @add7i32(%i32vec7* sret %ret, %i32vec7* %ap, %i32vec7* %bp) {
+; CHECK: movaps
+; CHECK: movaps
+; CHECK: paddd
+; CHECK: paddd
+; CHECK: pextrd
+; CHECK: movq
+; CHECK: movaps
+ %a = load %i32vec7* %ap, align 16
+ %b = load %i32vec7* %bp, align 16
+ %x = add %i32vec7 %a, %b
+ store %i32vec7 %x, %i32vec7* %ret, align 16
+ ret void
+}
+
+%i32vec12 = type <12 x i32>
+define void @add12i32(%i32vec12* sret %ret, %i32vec12* %ap, %i32vec12* %bp) {
+; CHECK: movaps
+; CHECK: movaps
+; CHECK: movaps
+; CHECK: paddd
+; CHECK: paddd
+; CHECK: paddd
+; CHECK: movaps
+; CHECK: movaps
+; CHECK: movaps
+ %a = load %i32vec12* %ap, align 16
+ %b = load %i32vec12* %bp, align 16
+ %x = add %i32vec12 %a, %b
+ store %i32vec12 %x, %i32vec12* %ret, align 16
+ ret void
+}
+
+
+%i16vec3 = type <3 x i16>
+define void @add3i16(%i16vec3* nocapture sret %ret, %i16vec3* %ap, %i16vec3* %bp) nounwind {
+; CHECK: movaps
+; CHECK: paddw
+; CHECK: movd
+; CHECK: pextrw
+ %a = load %i16vec3* %ap, align 16
+ %b = load %i16vec3* %bp, align 16
+ %x = add %i16vec3 %a, %b
+ store %i16vec3 %x, %i16vec3* %ret, align 16
+ ret void
+}
+
+%i16vec4 = type <4 x i16>
+define void @add4i16(%i16vec4* nocapture sret %ret, %i16vec4* %ap, %i16vec4* %bp) nounwind {
+; CHECK: movaps
+; CHECK: paddw
+; CHECK: movq
+ %a = load %i16vec4* %ap, align 16
+ %b = load %i16vec4* %bp, align 16
+ %x = add %i16vec4 %a, %b
+ store %i16vec4 %x, %i16vec4* %ret, align 16
+ ret void
+}
+
+%i16vec12 = type <12 x i16>
+define void @add12i16(%i16vec12* nocapture sret %ret, %i16vec12* %ap, %i16vec12* %bp) nounwind {
+; CHECK: movaps
+; CHECK: movaps
+; CHECK: paddw
+; CHECK: paddw
+; CHECK: movq
+; CHECK: movaps
+ %a = load %i16vec12* %ap, align 16
+ %b = load %i16vec12* %bp, align 16
+ %x = add %i16vec12 %a, %b
+ store %i16vec12 %x, %i16vec12* %ret, align 16
+ ret void
+}
+
+%i16vec18 = type <18 x i16>
+define void @add18i16(%i16vec18* nocapture sret %ret, %i16vec18* %ap, %i16vec18* %bp) nounwind {
+; CHECK: movaps
+; CHECK: movaps
+; CHECK: movaps
+; CHECK: paddw
+; CHECK: paddw
+; CHECK: paddw
+; CHECK: movd
+; CHECK: movaps
+; CHECK: movaps
+ %a = load %i16vec18* %ap, align 16
+ %b = load %i16vec18* %bp, align 16
+ %x = add %i16vec18 %a, %b
+ store %i16vec18 %x, %i16vec18* %ret, align 16
+ ret void
+}
+
+
+%i8vec3 = type <3 x i8>
+define void @add3i8(%i8vec3* nocapture sret %ret, %i8vec3* %ap, %i8vec3* %bp) nounwind {
+; CHECK: movaps
+; CHECK: paddb
+; CHECK: pextrb
+; CHECK: movb
+ %a = load %i8vec3* %ap, align 16
+ %b = load %i8vec3* %bp, align 16
+ %x = add %i8vec3 %a, %b
+ store %i8vec3 %x, %i8vec3* %ret, align 16
+ ret void
+}
+
+%i8vec31 = type <31 x i8>
+define void @add31i8(%i8vec31* nocapture sret %ret, %i8vec31* %ap, %i8vec31* %bp) nounwind {
+; CHECK: movaps
+; CHECK: movaps
+; CHECK: paddb
+; CHECK: paddb
+; CHECK: movq
+; CHECK: pextrb
+; CHECK: pextrw
+ %a = load %i8vec31* %ap, align 16
+ %b = load %i8vec31* %bp, align 16
+ %x = add %i8vec31 %a, %b
+ store %i8vec31 %x, %i8vec31* %ret, align 16
+ ret void
+} \ No newline at end of file
diff --git a/test/CodeGen/X86/zext-trunc.ll b/test/CodeGen/X86/zext-trunc.ll
new file mode 100644
index 0000000000000..b9ffbe87b21b6
--- /dev/null
+++ b/test/CodeGen/X86/zext-trunc.ll
@@ -0,0 +1,13 @@
+; RUN: llc < %s -march=x86-64 | FileCheck %s
+; rdar://7570931
+
+define i64 @foo(i64 %a, i64 %b) nounwind {
+; CHECK: foo:
+; CHECK: leal
+; CHECK-NOT: movl
+; CHECK: ret
+ %c = add i64 %a, %b
+ %d = trunc i64 %c to i32
+ %e = zext i32 %d to i64
+ ret i64 %e
+}
diff --git a/test/CodeGen/XCore/ashr.ll b/test/CodeGen/XCore/ashr.ll
index d585e8b10d98f..d99808fc4a2ff 100644
--- a/test/CodeGen/XCore/ashr.ll
+++ b/test/CodeGen/XCore/ashr.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=xcore | FileCheck %s
+; RUN: llc < %s -march=xcore -asm-verbose=0 | FileCheck %s
define i32 @ashr(i32 %a, i32 %b) {
%1 = ashr i32 %a, %b
ret i32 %1