[llvm] Fix arm32 compilation hang (PR #190279)
Sharjeel Khan via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 2 15:58:13 PDT 2026
https://github.com/Sharjeel-Khan created https://github.com/llvm/llvm-project/pull/190279
Jump Threading can create self-referential insertvalues which are allowed by the verifier in unreachable code. These self-referential insertvalues cause the compilation to hang in simplifyExtractValueInst. This PR adds a check to break out of the loop if it detects it is a self-referential insertvalue and adds the reproducer's bitcode as a test.
Fixes: https://github.com/llvm/llvm-project/issues/187381
>From 29dd6ce061209655633686fc03c3aab712c29bce Mon Sep 17 00:00:00 2001
From: Sharjeel Khan <sharjeelkhan at google.com>
Date: Tue, 31 Mar 2026 02:50:47 +0000
Subject: [PATCH 1/2] Add check for self-referential and break
---
llvm/lib/Analysis/InstructionSimplify.cpp | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp
index 12c3edc0ced30..4c5eeb5e51853 100644
--- a/llvm/lib/Analysis/InstructionSimplify.cpp
+++ b/llvm/lib/Analysis/InstructionSimplify.cpp
@@ -5455,8 +5455,7 @@ static Value *simplifyExtractValueInst(Value *Agg, ArrayRef<unsigned> Idxs,
// extractvalue x, (insertvalue y, elt, n), n -> elt
unsigned NumIdxs = Idxs.size();
- for (auto *IVI = dyn_cast<InsertValueInst>(Agg); IVI != nullptr;
- IVI = dyn_cast<InsertValueInst>(IVI->getAggregateOperand())) {
+ for (auto *IVI = dyn_cast<InsertValueInst>(Agg); IVI != nullptr;) {
ArrayRef<unsigned> InsertValueIdxs = IVI->getIndices();
unsigned NumInsertValueIdxs = InsertValueIdxs.size();
unsigned NumCommonIdxs = std::min(NumInsertValueIdxs, NumIdxs);
@@ -5466,6 +5465,14 @@ static Value *simplifyExtractValueInst(Value *Agg, ArrayRef<unsigned> Idxs,
return IVI->getInsertedValueOperand();
break;
}
+
+ // Based on the verifier, self-referential insertvalues are apparently
+ // fine in unreachable blocks and they will cause this loop to run in
+ // infinitely. I am just adding a check to break out if it is the case.
+ auto *newIVI = dyn_cast<InsertValueInst>(IVI->getAggregateOperand());
+ if (IVI == newIVI)
+ break;
+ IVI = newIVI;
}
// Simplify umul_with_overflow where one operand is 1.
>From d30294433b62cb7ec38191afbb3760e417bc983c Mon Sep 17 00:00:00 2001
From: Sharjeel Khan <sharjeelkhan at google.com>
Date: Thu, 2 Apr 2026 22:51:43 +0000
Subject: [PATCH 2/2] Added reduced bitcode as a test
---
.../CorrelatedValuePropagation/pr187381.ll | 1490 +++++++++++++++++
1 file changed, 1490 insertions(+)
create mode 100644 llvm/test/Transforms/CorrelatedValuePropagation/pr187381.ll
diff --git a/llvm/test/Transforms/CorrelatedValuePropagation/pr187381.ll b/llvm/test/Transforms/CorrelatedValuePropagation/pr187381.ll
new file mode 100644
index 0000000000000..8e259f75bf9ea
--- /dev/null
+++ b/llvm/test/Transforms/CorrelatedValuePropagation/pr187381.ll
@@ -0,0 +1,1490 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt < %s -passes=correlated-propagation -S | FileCheck %s
+
+define i32 @main() {
+; CHECK-LABEL: define i32 @main() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: br i1 false, label %[[ENTRY_MPATH_PARENT_EXIT_THREAD_CRIT_EDGE:.*]], label %[[LAND_RHS_I_I:.*]]
+; CHECK: [[ENTRY_MPATH_PARENT_EXIT_THREAD_CRIT_EDGE]]:
+; CHECK-NEXT: br label %[[MPATH_PARENT_EXIT_THREAD:.*]]
+; CHECK: [[LAND_RHS_I_I]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I_I_WHILE_BODY_I_CRIT_EDGE:.*]], label %[[LAND_RHS_I84_I:.*]]
+; CHECK: [[LAND_RHS_I_I_WHILE_BODY_I_CRIT_EDGE]]:
+; CHECK-NEXT: br label %[[WHILE_BODY_I:.*]]
+; CHECK: [[LAND_RHS_I74_I:.*]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I]], label %[[LAND_RHS_I74_I_MPATH_PARENT_EXIT_CRIT_EDGE:.*]]
+; CHECK: [[LAND_RHS_I74_I_MPATH_PARENT_EXIT_CRIT_EDGE]]:
+; CHECK-NEXT: br label %[[MPATH_PARENT_EXIT:.*]]
+; CHECK: [[WHILE_BODY_I]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I_MPATH_PARENT_EXIT_THREAD_CRIT_EDGE:.*]], label %[[LAND_RHS_I74_I]]
+; CHECK: [[WHILE_BODY_I_MPATH_PARENT_EXIT_THREAD_CRIT_EDGE]]:
+; CHECK-NEXT: br label %[[MPATH_PARENT_EXIT_THREAD]]
+; CHECK: [[LAND_RHS_I84_I]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END6_I:.*]], label %[[WHILE_BODY4_I:.*]]
+; CHECK: [[WHILE_BODY4_I]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY4_I_MPATH_PARENT_EXIT_THREAD_CRIT_EDGE:.*]], label %[[LAND_RHS_I84_I]]
+; CHECK: [[WHILE_BODY4_I_MPATH_PARENT_EXIT_THREAD_CRIT_EDGE]]:
+; CHECK-NEXT: br label %[[MPATH_PARENT_EXIT_THREAD]]
+; CHECK: [[WHILE_END6_I]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I:.*]], label %[[WHILE_END6_I_MPATH_PARENT_EXIT_THREAD_CRIT_EDGE:.*]]
+; CHECK: [[WHILE_END6_I_MPATH_PARENT_EXIT_THREAD_CRIT_EDGE]]:
+; CHECK-NEXT: br label %[[MPATH_PARENT_EXIT_THREAD]]
+; CHECK: [[LAND_RHS_I99_I]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY13_I:.*]], label %[[MPATH_PARENT_EXIT]]
+; CHECK: [[WHILE_BODY13_I]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I]], label %[[WHILE_BODY13_I_MPATH_PARENT_EXIT_THREAD_CRIT_EDGE:.*]]
+; CHECK: [[WHILE_BODY13_I_MPATH_PARENT_EXIT_THREAD_CRIT_EDGE]]:
+; CHECK-NEXT: br label %[[MPATH_PARENT_EXIT_THREAD]]
+; CHECK: [[MPATH_PARENT_EXIT_THREAD]]:
+; CHECK-NEXT: br label %[[IF_THEN_I:.*]]
+; CHECK: [[MPATH_PARENT_EXIT]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I:.*]], label %[[MPATH_PARENT_EXIT_IF_THEN_I_CRIT_EDGE:.*]]
+; CHECK: [[MPATH_PARENT_EXIT_IF_THEN_I_CRIT_EDGE]]:
+; CHECK-NEXT: br label %[[IF_THEN_I]]
+; CHECK: [[MSTR_EQ_EXIT_I]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT:.*]], label %[[MSTR_EQ_EXIT_I_IF_THEN_I_CRIT_EDGE:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I_IF_THEN_I_CRIT_EDGE]]:
+; CHECK-NEXT: br label %[[IF_THEN_I]]
+; CHECK: [[IF_THEN_I]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT767:.*]], label %[[LAND_RHS_I_I735:.*]]
+; CHECK: [[LAND_RHS_I_I735]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I758:.*]], label %[[LAND_RHS_I84_I738:.*]]
+; CHECK: [[LAND_RHS_I74_I764:.*]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I758]], label %[[LAND_RHS_I_I769:.*]]
+; CHECK: [[WHILE_BODY_I758]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT767]], label %[[LAND_RHS_I74_I764]]
+; CHECK: [[LAND_RHS_I84_I738]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END6_I748:.*]], label %[[WHILE_BODY4_I742:.*]]
+; CHECK: [[WHILE_BODY4_I742]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT767]], label %[[LAND_RHS_I84_I738]]
+; CHECK: [[WHILE_END6_I748]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I751:.*]], label %[[LAND_RHS_I_I769]]
+; CHECK: [[LAND_RHS_I99_I751]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY13_I755:.*]], label %[[LAND_RHS_I_I769]]
+; CHECK: [[WHILE_BODY13_I755]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I751]], label %[[LAND_RHS_I_I769]]
+; CHECK: [[MPATH_PARENT_EXIT767]]:
+; CHECK-NEXT: br label %[[MPATH_PARENT_EXIT801_THREAD:.*]]
+; CHECK: [[LAND_RHS_I_I769]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I792:.*]], label %[[LAND_RHS_I84_I772:.*]]
+; CHECK: [[LAND_RHS_I74_I798:.*]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I792]], label %[[MPATH_PARENT_EXIT801:.*]]
+; CHECK: [[WHILE_BODY_I792]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT801_THREAD]], label %[[LAND_RHS_I74_I798]]
+; CHECK: [[LAND_RHS_I84_I772]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END6_I782:.*]], label %[[WHILE_BODY4_I776:.*]]
+; CHECK: [[WHILE_BODY4_I776]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT801_THREAD]], label %[[LAND_RHS_I84_I772]]
+; CHECK: [[WHILE_END6_I782]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I785:.*]], label %[[MPATH_PARENT_EXIT801_THREAD]]
+; CHECK: [[LAND_RHS_I99_I785]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY13_I789:.*]], label %[[MPATH_PARENT_EXIT801]]
+; CHECK: [[WHILE_BODY13_I789]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I785]], label %[[MPATH_PARENT_EXIT801_THREAD]]
+; CHECK: [[MPATH_PARENT_EXIT801_THREAD]]:
+; CHECK-NEXT: br label %[[IF_THEN_I804:.*]]
+; CHECK: [[MPATH_PARENT_EXIT801]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I806:.*]], label %[[IF_THEN_I804]]
+; CHECK: [[MSTR_EQ_EXIT_I806]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I_I812:.*]], label %[[IF_THEN_I804]]
+; CHECK: [[IF_THEN_I804]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[LAND_RHS_I84_US_I:.*]]:
+; CHECK-NEXT: br label %[[WHILE_BODY4_US_I:.*]]
+; CHECK: [[WHILE_BODY4_US_I]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT820:.*]], label %[[LAND_RHS_I84_US_I]]
+; CHECK: [[LAND_RHS_I_I812]]:
+; CHECK-NEXT: br label %[[LAND_RHS_I84_US_I]]
+; CHECK: [[LAND_RHS_I74_US_I:.*]]:
+; CHECK-NEXT: [[TMP0:%.*]] = insertvalue [2 x i32] [[TMP0]], i32 0, 1
+; CHECK-NEXT: [[PATH_COERCE_FCA_0_EXTRACT_I75_US_I:%.*]] = extractvalue [2 x i32] [[TMP0]], 0
+; CHECK-NEXT: switch i8 0, label %[[MPATH_PARENT_EXIT820]] [
+; CHECK-NEXT: i8 92, label %[[WHILE_BODY_US_I:.*]]
+; CHECK-NEXT: i8 47, label %[[WHILE_BODY_US_I]]
+; CHECK-NEXT: ]
+; CHECK: [[WHILE_BODY_US_I]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT820]], label %[[LAND_RHS_I74_US_I]]
+; CHECK: [[WHILE_END6_I817:.*]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_US_I:.*]], label %[[MPATH_PARENT_EXIT820]]
+; CHECK: [[LAND_RHS_I99_US_I]]:
+; CHECK-NEXT: switch i8 0, label %[[MPATH_PARENT_EXIT820]] [
+; CHECK-NEXT: i8 92, label %[[WHILE_BODY13_US_I:.*]]
+; CHECK-NEXT: i8 47, label %[[WHILE_BODY13_US_I]]
+; CHECK-NEXT: ]
+; CHECK: [[WHILE_BODY13_US_I]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_US_I]], label %[[MPATH_PARENT_EXIT820]]
+; CHECK: [[MPATH_PARENT_EXIT820]]:
+; CHECK-NEXT: [[PATH_COERCE_FCA_0_EXTRACT_SINK_I814:%.*]] = phi i32 [ 0, %[[WHILE_END6_I817]] ], [ [[PATH_COERCE_FCA_0_EXTRACT_I75_US_I]], %[[LAND_RHS_I74_US_I]] ], [ 0, %[[WHILE_BODY_US_I]] ], [ 0, %[[WHILE_BODY13_US_I]] ], [ 0, %[[LAND_RHS_I99_US_I]] ], [ 0, %[[WHILE_BODY4_US_I]] ]
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I826:.*]], label %[[IF_THEN_I824:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I826]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I_I832:.*]], label %[[IF_THEN_I824]]
+; CHECK: [[IF_THEN_I824]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[LAND_RHS_I_I832]]:
+; CHECK-NEXT: br label %[[LAND_RHS_I84_I835:.*]]
+; CHECK: [[LAND_RHS_I84_I835]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END6_I845:.*]], label %[[WHILE_BODY4_I839:.*]]
+; CHECK: [[WHILE_BODY4_I839]]:
+; CHECK-NEXT: br i1 false, label %[[IF_THEN_I871:.*]], label %[[LAND_RHS_I84_I835]]
+; CHECK: [[WHILE_END6_I845]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I848:.*]], label %[[LAND_RHS_I_I866:.*]]
+; CHECK: [[LAND_RHS_I99_I848]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY13_I852:.*]], label %[[LAND_RHS_I_I866]]
+; CHECK: [[WHILE_BODY13_I852]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I848]], label %[[LAND_RHS_I_I866]]
+; CHECK: [[IF_THEN_I871]]:
+; CHECK-NEXT: br label %[[MPATH_JOIN_EXIT:.*]]
+; CHECK: [[LAND_RHS_I_I866]]:
+; CHECK-NEXT: br i1 false, label %[[IF_THEN6_I_I_I:.*]], label %[[IF_END9_I:.*]]
+; CHECK: [[IF_THEN6_I_I_I]]:
+; CHECK-NEXT: br label %[[MPATH_JOIN_EXIT]]
+; CHECK: [[IF_END9_I]]:
+; CHECK-NEXT: br label %[[MPATH_JOIN_EXIT]]
+; CHECK: [[MPATH_JOIN_EXIT]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I879:.*]], label %[[IF_THEN_I877:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I879]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT882:.*]], label %[[IF_THEN_I877]]
+; CHECK: [[IF_THEN_I877]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT882]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT917:.*]], label %[[LAND_RHS_I_I885:.*]]
+; CHECK: [[LAND_RHS_I_I885]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I908:.*]], label %[[LAND_RHS_I84_I888:.*]]
+; CHECK: [[LAND_RHS_I74_I914:.*]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I908]], label %[[MPATH_PARENT_EXIT917]]
+; CHECK: [[WHILE_BODY_I908]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT917]], label %[[LAND_RHS_I74_I914]]
+; CHECK: [[LAND_RHS_I84_I888]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END6_I898:.*]], label %[[WHILE_BODY4_I892:.*]]
+; CHECK: [[WHILE_BODY4_I892]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT917]], label %[[LAND_RHS_I84_I888]]
+; CHECK: [[WHILE_END6_I898]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I901:.*]], label %[[MPATH_PARENT_EXIT917]]
+; CHECK: [[LAND_RHS_I99_I901]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY13_I905:.*]], label %[[MPATH_PARENT_EXIT917]]
+; CHECK: [[WHILE_BODY13_I905]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I901]], label %[[MPATH_PARENT_EXIT917]]
+; CHECK: [[MPATH_PARENT_EXIT917]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I923:.*]], label %[[IF_THEN_I921:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I923]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT926:.*]], label %[[IF_THEN_I921]]
+; CHECK: [[IF_THEN_I921]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT926]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT962:.*]], label %[[LAND_RHS_I_I930:.*]]
+; CHECK: [[LAND_RHS_I_I930]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I953:.*]], label %[[LAND_RHS_I84_I933:.*]]
+; CHECK: [[LAND_RHS_I74_I959:.*]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I953]], label %[[MPATH_PARENT_EXIT962]]
+; CHECK: [[WHILE_BODY_I953]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT962]], label %[[LAND_RHS_I74_I959]]
+; CHECK: [[LAND_RHS_I84_I933]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END6_I943:.*]], label %[[WHILE_BODY4_I937:.*]]
+; CHECK: [[WHILE_BODY4_I937]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT962]], label %[[LAND_RHS_I84_I933]]
+; CHECK: [[WHILE_END6_I943]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I946:.*]], label %[[MPATH_PARENT_EXIT962]]
+; CHECK: [[LAND_RHS_I99_I946]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY13_I950:.*]], label %[[MPATH_PARENT_EXIT962]]
+; CHECK: [[WHILE_BODY13_I950]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I946]], label %[[MPATH_PARENT_EXIT962]]
+; CHECK: [[MPATH_PARENT_EXIT962]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I968:.*]], label %[[IF_THEN_I966:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I968]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT971:.*]], label %[[IF_THEN_I966]]
+; CHECK: [[IF_THEN_I966]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT971]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1007:.*]], label %[[LAND_RHS_I_I975:.*]]
+; CHECK: [[LAND_RHS_I_I975]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I998:.*]], label %[[LAND_RHS_I84_I978:.*]]
+; CHECK: [[LAND_RHS_I74_I1004:.*]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I998]], label %[[MPATH_PARENT_EXIT1007]]
+; CHECK: [[WHILE_BODY_I998]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1007]], label %[[LAND_RHS_I74_I1004]]
+; CHECK: [[LAND_RHS_I84_I978]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END6_I988:.*]], label %[[WHILE_BODY4_I982:.*]]
+; CHECK: [[WHILE_BODY4_I982]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1007]], label %[[LAND_RHS_I84_I978]]
+; CHECK: [[WHILE_END6_I988]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I991:.*]], label %[[MPATH_PARENT_EXIT1007]]
+; CHECK: [[LAND_RHS_I99_I991]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY13_I995:.*]], label %[[MPATH_PARENT_EXIT1007]]
+; CHECK: [[WHILE_BODY13_I995]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I991]], label %[[MPATH_PARENT_EXIT1007]]
+; CHECK: [[MPATH_PARENT_EXIT1007]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1013:.*]], label %[[IF_THEN_I1011:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1013]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1016:.*]], label %[[IF_THEN_I1011]]
+; CHECK: [[IF_THEN_I1011]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1016]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1052:.*]], label %[[LAND_RHS_I_I1020:.*]]
+; CHECK: [[LAND_RHS_I_I1020]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I1043:.*]], label %[[LAND_RHS_I84_I1023:.*]]
+; CHECK: [[LAND_RHS_I74_I1049:.*]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I1043]], label %[[MPATH_PARENT_EXIT1052]]
+; CHECK: [[WHILE_BODY_I1043]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1052]], label %[[LAND_RHS_I74_I1049]]
+; CHECK: [[LAND_RHS_I84_I1023]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END6_I1033:.*]], label %[[WHILE_BODY4_I1027:.*]]
+; CHECK: [[WHILE_BODY4_I1027]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1052]], label %[[LAND_RHS_I84_I1023]]
+; CHECK: [[WHILE_END6_I1033]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I1036:.*]], label %[[MPATH_PARENT_EXIT1052]]
+; CHECK: [[LAND_RHS_I99_I1036]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY13_I1040:.*]], label %[[MPATH_PARENT_EXIT1052]]
+; CHECK: [[WHILE_BODY13_I1040]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I1036]], label %[[MPATH_PARENT_EXIT1052]]
+; CHECK: [[MPATH_PARENT_EXIT1052]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1058:.*]], label %[[IF_THEN_I1056:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1058]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1061:.*]], label %[[IF_THEN_I1056]]
+; CHECK: [[IF_THEN_I1056]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1061]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1097:.*]], label %[[LAND_RHS_I_I1065:.*]]
+; CHECK: [[LAND_RHS_I_I1065]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I1088:.*]], label %[[LAND_RHS_I84_I1068:.*]]
+; CHECK: [[LAND_RHS_I74_I1094:.*]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I1088]], label %[[MPATH_PARENT_EXIT1097]]
+; CHECK: [[WHILE_BODY_I1088]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1097]], label %[[LAND_RHS_I74_I1094]]
+; CHECK: [[LAND_RHS_I84_I1068]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END6_I1078:.*]], label %[[WHILE_BODY4_I1072:.*]]
+; CHECK: [[WHILE_BODY4_I1072]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1097]], label %[[LAND_RHS_I84_I1068]]
+; CHECK: [[WHILE_END6_I1078]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I1081:.*]], label %[[MPATH_PARENT_EXIT1097]]
+; CHECK: [[LAND_RHS_I99_I1081]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY13_I1085:.*]], label %[[MPATH_PARENT_EXIT1097]]
+; CHECK: [[WHILE_BODY13_I1085]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I1081]], label %[[MPATH_PARENT_EXIT1097]]
+; CHECK: [[MPATH_PARENT_EXIT1097]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1103:.*]], label %[[IF_THEN_I1101:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1103]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1106:.*]], label %[[IF_THEN_I1101]]
+; CHECK: [[IF_THEN_I1101]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1106]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1142:.*]], label %[[LAND_RHS_I_I1110:.*]]
+; CHECK: [[LAND_RHS_I_I1110]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I1133:.*]], label %[[LAND_RHS_I84_I1113:.*]]
+; CHECK: [[LAND_RHS_I74_I1139:.*]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I1133]], label %[[MPATH_PARENT_EXIT1142]]
+; CHECK: [[WHILE_BODY_I1133]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1142]], label %[[LAND_RHS_I74_I1139]]
+; CHECK: [[LAND_RHS_I84_I1113]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END6_I1123:.*]], label %[[WHILE_BODY4_I1117:.*]]
+; CHECK: [[WHILE_BODY4_I1117]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1142]], label %[[LAND_RHS_I84_I1113]]
+; CHECK: [[WHILE_END6_I1123]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I1126:.*]], label %[[MPATH_PARENT_EXIT1142]]
+; CHECK: [[LAND_RHS_I99_I1126]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY13_I1130:.*]], label %[[MPATH_PARENT_EXIT1142]]
+; CHECK: [[WHILE_BODY13_I1130]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I1126]], label %[[MPATH_PARENT_EXIT1142]]
+; CHECK: [[MPATH_PARENT_EXIT1142]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1148:.*]], label %[[IF_THEN_I1146:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1148]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1151:.*]], label %[[IF_THEN_I1146]]
+; CHECK: [[IF_THEN_I1146]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1151]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1187:.*]], label %[[LAND_RHS_I_I1155:.*]]
+; CHECK: [[LAND_RHS_I_I1155]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I1178:.*]], label %[[LAND_RHS_I84_I1158:.*]]
+; CHECK: [[LAND_RHS_I74_I1184:.*]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I1178]], label %[[MPATH_PARENT_EXIT1187]]
+; CHECK: [[WHILE_BODY_I1178]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1187]], label %[[LAND_RHS_I74_I1184]]
+; CHECK: [[LAND_RHS_I84_I1158]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END6_I1168:.*]], label %[[WHILE_BODY4_I1162:.*]]
+; CHECK: [[WHILE_BODY4_I1162]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1187]], label %[[LAND_RHS_I84_I1158]]
+; CHECK: [[WHILE_END6_I1168]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I1171:.*]], label %[[MPATH_PARENT_EXIT1187]]
+; CHECK: [[LAND_RHS_I99_I1171]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY13_I1175:.*]], label %[[MPATH_PARENT_EXIT1187]]
+; CHECK: [[WHILE_BODY13_I1175]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I1171]], label %[[MPATH_PARENT_EXIT1187]]
+; CHECK: [[MPATH_PARENT_EXIT1187]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1193:.*]], label %[[IF_THEN_I1191:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1193]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1196:.*]], label %[[IF_THEN_I1191]]
+; CHECK: [[IF_THEN_I1191]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1196]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1232:.*]], label %[[LAND_RHS_I_I1200:.*]]
+; CHECK: [[LAND_RHS_I_I1200]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I1223:.*]], label %[[LAND_RHS_I84_I1203:.*]]
+; CHECK: [[LAND_RHS_I74_I1229:.*]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I1223]], label %[[MPATH_PARENT_EXIT1232]]
+; CHECK: [[WHILE_BODY_I1223]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1232]], label %[[LAND_RHS_I74_I1229]]
+; CHECK: [[LAND_RHS_I84_I1203]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END6_I1213:.*]], label %[[WHILE_BODY4_I1207:.*]]
+; CHECK: [[WHILE_BODY4_I1207]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1232]], label %[[LAND_RHS_I84_I1203]]
+; CHECK: [[WHILE_END6_I1213]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I1216:.*]], label %[[MPATH_PARENT_EXIT1232]]
+; CHECK: [[LAND_RHS_I99_I1216]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY13_I1220:.*]], label %[[MPATH_PARENT_EXIT1232]]
+; CHECK: [[WHILE_BODY13_I1220]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I1216]], label %[[MPATH_PARENT_EXIT1232]]
+; CHECK: [[MPATH_PARENT_EXIT1232]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1238:.*]], label %[[IF_THEN_I1236:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1238]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1241:.*]], label %[[IF_THEN_I1236]]
+; CHECK: [[IF_THEN_I1236]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1241]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1277:.*]], label %[[LAND_RHS_I_I1245:.*]]
+; CHECK: [[LAND_RHS_I_I1245]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I1268:.*]], label %[[LAND_RHS_I84_I1248:.*]]
+; CHECK: [[LAND_RHS_I74_I1274:.*]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I1268]], label %[[MPATH_PARENT_EXIT1277]]
+; CHECK: [[WHILE_BODY_I1268]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1277]], label %[[LAND_RHS_I74_I1274]]
+; CHECK: [[LAND_RHS_I84_I1248]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END6_I1258:.*]], label %[[WHILE_BODY4_I1252:.*]]
+; CHECK: [[WHILE_BODY4_I1252]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1277]], label %[[LAND_RHS_I84_I1248]]
+; CHECK: [[WHILE_END6_I1258]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I1261:.*]], label %[[MPATH_PARENT_EXIT1277]]
+; CHECK: [[LAND_RHS_I99_I1261]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY13_I1265:.*]], label %[[MPATH_PARENT_EXIT1277]]
+; CHECK: [[WHILE_BODY13_I1265]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I1261]], label %[[MPATH_PARENT_EXIT1277]]
+; CHECK: [[MPATH_PARENT_EXIT1277]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1283:.*]], label %[[IF_THEN_I1281:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1283]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1286:.*]], label %[[IF_THEN_I1281]]
+; CHECK: [[IF_THEN_I1281]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1286]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1322:.*]], label %[[LAND_RHS_I_I1290:.*]]
+; CHECK: [[LAND_RHS_I_I1290]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I1313:.*]], label %[[LAND_RHS_I84_I1293:.*]]
+; CHECK: [[LAND_RHS_I74_I1319:.*]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I1313]], label %[[MPATH_PARENT_EXIT1322]]
+; CHECK: [[WHILE_BODY_I1313]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1322]], label %[[LAND_RHS_I74_I1319]]
+; CHECK: [[LAND_RHS_I84_I1293]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END6_I1303:.*]], label %[[WHILE_BODY4_I1297:.*]]
+; CHECK: [[WHILE_BODY4_I1297]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1322]], label %[[LAND_RHS_I84_I1293]]
+; CHECK: [[WHILE_END6_I1303]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I1306:.*]], label %[[MPATH_PARENT_EXIT1322]]
+; CHECK: [[LAND_RHS_I99_I1306]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY13_I1310:.*]], label %[[MPATH_PARENT_EXIT1322]]
+; CHECK: [[WHILE_BODY13_I1310]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I1306]], label %[[MPATH_PARENT_EXIT1322]]
+; CHECK: [[MPATH_PARENT_EXIT1322]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1328:.*]], label %[[IF_THEN_I1326:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1328]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1331:.*]], label %[[IF_THEN_I1326]]
+; CHECK: [[IF_THEN_I1326]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1331]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1367:.*]], label %[[LAND_RHS_I_I1335:.*]]
+; CHECK: [[LAND_RHS_I_I1335]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I1358:.*]], label %[[LAND_RHS_I84_I1338:.*]]
+; CHECK: [[LAND_RHS_I74_I1364:.*]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY_I1358]], label %[[MPATH_PARENT_EXIT1367]]
+; CHECK: [[WHILE_BODY_I1358]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1367]], label %[[LAND_RHS_I74_I1364]]
+; CHECK: [[LAND_RHS_I84_I1338]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END6_I1348:.*]], label %[[WHILE_BODY4_I1342:.*]]
+; CHECK: [[WHILE_BODY4_I1342]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_PARENT_EXIT1367]], label %[[LAND_RHS_I84_I1338]]
+; CHECK: [[WHILE_END6_I1348]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I1351:.*]], label %[[MPATH_PARENT_EXIT1367]]
+; CHECK: [[LAND_RHS_I99_I1351]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_BODY13_I1355:.*]], label %[[MPATH_PARENT_EXIT1367]]
+; CHECK: [[WHILE_BODY13_I1355]]:
+; CHECK-NEXT: br i1 false, label %[[LAND_RHS_I99_I1351]], label %[[MPATH_PARENT_EXIT1367]]
+; CHECK: [[MPATH_PARENT_EXIT1367]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1373:.*]], label %[[IF_THEN_I1371:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1373]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1376:.*]], label %[[IF_THEN_I1371]]
+; CHECK: [[IF_THEN_I1371]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1376]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_FILENAME_EXIT:.*]], label %[[IF_END_I:.*]]
+; CHECK: [[IF_END_I]]:
+; CHECK-NEXT: br label %[[WHILE_COND_I:.*]]
+; CHECK: [[WHILE_COND_I]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END_I:.*]], label %[[LAND_RHS_I:.*]]
+; CHECK: [[LAND_RHS_I]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END_I]], label %[[WHILE_COND_I]]
+; CHECK: [[WHILE_END_I]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_FILENAME_EXIT]], label %[[IF_END8_I:.*]]
+; CHECK: [[IF_END8_I]]:
+; CHECK-NEXT: br label %[[MPATH_FILENAME_EXIT]]
+; CHECK: [[MPATH_FILENAME_EXIT]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1391:.*]], label %[[IF_THEN_I1389:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1391]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1394:.*]], label %[[IF_THEN_I1389]]
+; CHECK: [[IF_THEN_I1389]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1394]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_FILENAME_EXIT1419:.*]], label %[[IF_END_I1398:.*]]
+; CHECK: [[IF_END_I1398]]:
+; CHECK-NEXT: br label %[[WHILE_COND_I1400:.*]]
+; CHECK: [[WHILE_COND_I1400]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END_I1406:.*]], label %[[LAND_RHS_I1403:.*]]
+; CHECK: [[LAND_RHS_I1403]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END_I1406]], label %[[WHILE_COND_I1400]]
+; CHECK: [[WHILE_END_I1406]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_FILENAME_EXIT1419]], label %[[IF_END8_I1411:.*]]
+; CHECK: [[IF_END8_I1411]]:
+; CHECK-NEXT: br label %[[MPATH_FILENAME_EXIT1419]]
+; CHECK: [[MPATH_FILENAME_EXIT1419]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1425:.*]], label %[[IF_THEN_I1423:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1425]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1428:.*]], label %[[IF_THEN_I1423]]
+; CHECK: [[IF_THEN_I1423]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1428]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_FILENAME_EXIT1453:.*]], label %[[IF_END_I1432:.*]]
+; CHECK: [[IF_END_I1432]]:
+; CHECK-NEXT: br label %[[WHILE_COND_I1434:.*]]
+; CHECK: [[WHILE_COND_I1434]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END_I1440:.*]], label %[[LAND_RHS_I1437:.*]]
+; CHECK: [[LAND_RHS_I1437]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END_I1440]], label %[[WHILE_COND_I1434]]
+; CHECK: [[WHILE_END_I1440]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_FILENAME_EXIT1453]], label %[[IF_END8_I1445:.*]]
+; CHECK: [[IF_END8_I1445]]:
+; CHECK-NEXT: br label %[[MPATH_FILENAME_EXIT1453]]
+; CHECK: [[MPATH_FILENAME_EXIT1453]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1459:.*]], label %[[IF_THEN_I1457:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1459]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1462:.*]], label %[[IF_THEN_I1457]]
+; CHECK: [[IF_THEN_I1457]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1462]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_FILENAME_EXIT1487:.*]], label %[[IF_END_I1466:.*]]
+; CHECK: [[IF_END_I1466]]:
+; CHECK-NEXT: br label %[[WHILE_COND_I1468:.*]]
+; CHECK: [[WHILE_COND_I1468]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END_I1474:.*]], label %[[LAND_RHS_I1471:.*]]
+; CHECK: [[LAND_RHS_I1471]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END_I1474]], label %[[WHILE_COND_I1468]]
+; CHECK: [[WHILE_END_I1474]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_FILENAME_EXIT1487]], label %[[IF_END8_I1479:.*]]
+; CHECK: [[IF_END8_I1479]]:
+; CHECK-NEXT: br label %[[MPATH_FILENAME_EXIT1487]]
+; CHECK: [[MPATH_FILENAME_EXIT1487]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1493:.*]], label %[[IF_THEN_I1491:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1493]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1496:.*]], label %[[IF_THEN_I1491]]
+; CHECK: [[IF_THEN_I1491]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1496]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_FILENAME_EXIT1521:.*]], label %[[IF_END_I1500:.*]]
+; CHECK: [[IF_END_I1500]]:
+; CHECK-NEXT: br label %[[WHILE_COND_I1502:.*]]
+; CHECK: [[WHILE_COND_I1502]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END_I1508:.*]], label %[[LAND_RHS_I1505:.*]]
+; CHECK: [[LAND_RHS_I1505]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END_I1508]], label %[[WHILE_COND_I1502]]
+; CHECK: [[WHILE_END_I1508]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_FILENAME_EXIT1521]], label %[[IF_END8_I1513:.*]]
+; CHECK: [[IF_END8_I1513]]:
+; CHECK-NEXT: br label %[[MPATH_FILENAME_EXIT1521]]
+; CHECK: [[MPATH_FILENAME_EXIT1521]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1527:.*]], label %[[IF_THEN_I1525:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1527]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1530:.*]], label %[[IF_THEN_I1525]]
+; CHECK: [[IF_THEN_I1525]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1530]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_FILENAME_EXIT1555:.*]], label %[[IF_END_I1534:.*]]
+; CHECK: [[IF_END_I1534]]:
+; CHECK-NEXT: br label %[[WHILE_COND_I1536:.*]]
+; CHECK: [[WHILE_COND_I1536]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END_I1542:.*]], label %[[LAND_RHS_I1539:.*]]
+; CHECK: [[LAND_RHS_I1539]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END_I1542]], label %[[WHILE_COND_I1536]]
+; CHECK: [[WHILE_END_I1542]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_FILENAME_EXIT1555]], label %[[IF_END8_I1547:.*]]
+; CHECK: [[IF_END8_I1547]]:
+; CHECK-NEXT: br label %[[MPATH_FILENAME_EXIT1555]]
+; CHECK: [[MPATH_FILENAME_EXIT1555]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1561:.*]], label %[[IF_THEN_I1559:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1561]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1564:.*]], label %[[IF_THEN_I1559]]
+; CHECK: [[IF_THEN_I1559]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1564]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_FILENAME_EXIT1589:.*]], label %[[IF_END_I1568:.*]]
+; CHECK: [[IF_END_I1568]]:
+; CHECK-NEXT: br label %[[WHILE_COND_I1570:.*]]
+; CHECK: [[WHILE_COND_I1570]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END_I1576:.*]], label %[[LAND_RHS_I1573:.*]]
+; CHECK: [[LAND_RHS_I1573]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END_I1576]], label %[[WHILE_COND_I1570]]
+; CHECK: [[WHILE_END_I1576]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_FILENAME_EXIT1589]], label %[[IF_END8_I1581:.*]]
+; CHECK: [[IF_END8_I1581]]:
+; CHECK-NEXT: br label %[[MPATH_FILENAME_EXIT1589]]
+; CHECK: [[MPATH_FILENAME_EXIT1589]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1595:.*]], label %[[IF_THEN_I1593:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1595]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1598:.*]], label %[[IF_THEN_I1593]]
+; CHECK: [[IF_THEN_I1593]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1598]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_FILENAME_EXIT1623:.*]], label %[[IF_END_I1602:.*]]
+; CHECK: [[IF_END_I1602]]:
+; CHECK-NEXT: br label %[[WHILE_COND_I1604:.*]]
+; CHECK: [[WHILE_COND_I1604]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END_I1610:.*]], label %[[LAND_RHS_I1607:.*]]
+; CHECK: [[LAND_RHS_I1607]]:
+; CHECK-NEXT: br i1 false, label %[[WHILE_END_I1610]], label %[[WHILE_COND_I1604]]
+; CHECK: [[WHILE_END_I1610]]:
+; CHECK-NEXT: br i1 false, label %[[MPATH_FILENAME_EXIT1623]], label %[[IF_END8_I1615:.*]]
+; CHECK: [[IF_END8_I1615]]:
+; CHECK-NEXT: br label %[[MPATH_FILENAME_EXIT1623]]
+; CHECK: [[MPATH_FILENAME_EXIT1623]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1629:.*]], label %[[IF_THEN_I1627:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1629]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1632:.*]], label %[[IF_THEN_I1627]]
+; CHECK: [[IF_THEN_I1627]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1632]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1645:.*]], label %[[IF_THEN_I1643:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1645]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1648:.*]], label %[[IF_THEN_I1643]]
+; CHECK: [[IF_THEN_I1643]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1648]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1672:.*]], label %[[IF_THEN_I1670:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1672]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1675:.*]], label %[[IF_THEN_I1670]]
+; CHECK: [[IF_THEN_I1670]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1675]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1699:.*]], label %[[IF_THEN_I1697:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1699]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1702:.*]], label %[[IF_THEN_I1697]]
+; CHECK: [[IF_THEN_I1697]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1702]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1726:.*]], label %[[IF_THEN_I1724:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1726]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1729:.*]], label %[[IF_THEN_I1724]]
+; CHECK: [[IF_THEN_I1724]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1729]]:
+; CHECK-NEXT: br i1 false, label %[[MSTR_EQ_EXIT_I1753:.*]], label %[[IF_THEN_I1751:.*]]
+; CHECK: [[MSTR_EQ_EXIT_I1753]]:
+; CHECK-NEXT: br i1 false, label %[[_MSTR_ASSERT__EXIT1756:.*]], label %[[IF_THEN_I1751]]
+; CHECK: [[IF_THEN_I1751]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[_MSTR_ASSERT__EXIT1756]]:
+; CHECK-NEXT: ret i32 0
+;
+entry:
+ br i1 false, label %entry.mpath_parent.exit.thread_crit_edge, label %land.rhs.i.i
+
+entry.mpath_parent.exit.thread_crit_edge: ; preds = %entry
+ br label %mpath_parent.exit.thread
+
+land.rhs.i.i: ; preds = %entry
+ br i1 false, label %land.rhs.i.i.while.body.i_crit_edge, label %land.rhs.i84.i
+
+land.rhs.i.i.while.body.i_crit_edge: ; preds = %land.rhs.i.i
+ br label %while.body.i
+
+land.rhs.i74.i: ; preds = %while.body.i
+ br i1 false, label %while.body.i, label %land.rhs.i74.i.mpath_parent.exit_crit_edge
+
+land.rhs.i74.i.mpath_parent.exit_crit_edge: ; preds = %land.rhs.i74.i
+ br label %mpath_parent.exit
+
+while.body.i: ; preds = %land.rhs.i74.i, %land.rhs.i.i.while.body.i_crit_edge
+ br i1 false, label %while.body.i.mpath_parent.exit.thread_crit_edge, label %land.rhs.i74.i
+
+while.body.i.mpath_parent.exit.thread_crit_edge: ; preds = %while.body.i
+ br label %mpath_parent.exit.thread
+
+land.rhs.i84.i: ; preds = %while.body4.i, %land.rhs.i.i
+ br i1 false, label %while.end6.i, label %while.body4.i
+
+while.body4.i: ; preds = %land.rhs.i84.i
+ br i1 false, label %while.body4.i.mpath_parent.exit.thread_crit_edge, label %land.rhs.i84.i
+
+while.body4.i.mpath_parent.exit.thread_crit_edge: ; preds = %while.body4.i
+ br label %mpath_parent.exit.thread
+
+while.end6.i: ; preds = %land.rhs.i84.i
+ br i1 false, label %land.rhs.i99.i, label %while.end6.i.mpath_parent.exit.thread_crit_edge
+
+while.end6.i.mpath_parent.exit.thread_crit_edge: ; preds = %while.end6.i
+ br label %mpath_parent.exit.thread
+
+land.rhs.i99.i: ; preds = %while.body13.i, %while.end6.i
+ br i1 false, label %while.body13.i, label %mpath_parent.exit
+
+while.body13.i: ; preds = %land.rhs.i99.i
+ br i1 false, label %land.rhs.i99.i, label %while.body13.i.mpath_parent.exit.thread_crit_edge
+
+while.body13.i.mpath_parent.exit.thread_crit_edge: ; preds = %while.body13.i
+ br label %mpath_parent.exit.thread
+
+mpath_parent.exit.thread: ; preds = %while.body13.i.mpath_parent.exit.thread_crit_edge, %while.end6.i.mpath_parent.exit.thread_crit_edge, %while.body4.i.mpath_parent.exit.thread_crit_edge, %while.body.i.mpath_parent.exit.thread_crit_edge, %entry.mpath_parent.exit.thread_crit_edge
+ br label %if.then.i
+
+mpath_parent.exit: ; preds = %land.rhs.i99.i, %land.rhs.i74.i.mpath_parent.exit_crit_edge
+ br i1 false, label %mstr_eq.exit.i, label %mpath_parent.exit.if.then.i_crit_edge
+
+mpath_parent.exit.if.then.i_crit_edge: ; preds = %mpath_parent.exit
+ br label %if.then.i
+
+mstr_eq.exit.i: ; preds = %mpath_parent.exit
+ br i1 false, label %_mstr_assert_.exit, label %mstr_eq.exit.i.if.then.i_crit_edge
+
+mstr_eq.exit.i.if.then.i_crit_edge: ; preds = %mstr_eq.exit.i
+ br label %if.then.i
+
+if.then.i: ; preds = %mstr_eq.exit.i.if.then.i_crit_edge, %mpath_parent.exit.if.then.i_crit_edge, %mpath_parent.exit.thread
+ unreachable
+
+_mstr_assert_.exit: ; preds = %mstr_eq.exit.i
+ br i1 false, label %mpath_parent.exit767, label %land.rhs.i.i735
+
+land.rhs.i.i735: ; preds = %_mstr_assert_.exit
+ br i1 false, label %while.body.i758, label %land.rhs.i84.i738
+
+land.rhs.i74.i764: ; preds = %while.body.i758
+ br i1 false, label %while.body.i758, label %land.rhs.i.i769
+
+while.body.i758: ; preds = %land.rhs.i74.i764, %land.rhs.i.i735
+ br i1 false, label %mpath_parent.exit767, label %land.rhs.i74.i764
+
+land.rhs.i84.i738: ; preds = %while.body4.i742, %land.rhs.i.i735
+ br i1 false, label %while.end6.i748, label %while.body4.i742
+
+while.body4.i742: ; preds = %land.rhs.i84.i738
+ br i1 false, label %mpath_parent.exit767, label %land.rhs.i84.i738
+
+while.end6.i748: ; preds = %land.rhs.i84.i738
+ br i1 false, label %land.rhs.i99.i751, label %land.rhs.i.i769
+
+land.rhs.i99.i751: ; preds = %while.body13.i755, %while.end6.i748
+ br i1 false, label %while.body13.i755, label %land.rhs.i.i769
+
+while.body13.i755: ; preds = %land.rhs.i99.i751
+ br i1 false, label %land.rhs.i99.i751, label %land.rhs.i.i769
+
+mpath_parent.exit767: ; preds = %while.body4.i742, %while.body.i758, %_mstr_assert_.exit
+ br label %mpath_parent.exit801.thread
+
+land.rhs.i.i769: ; preds = %while.body13.i755, %land.rhs.i99.i751, %while.end6.i748, %land.rhs.i74.i764
+ br i1 false, label %while.body.i792, label %land.rhs.i84.i772
+
+land.rhs.i74.i798: ; preds = %while.body.i792
+ br i1 false, label %while.body.i792, label %mpath_parent.exit801
+
+while.body.i792: ; preds = %land.rhs.i74.i798, %land.rhs.i.i769
+ br i1 false, label %mpath_parent.exit801.thread, label %land.rhs.i74.i798
+
+land.rhs.i84.i772: ; preds = %while.body4.i776, %land.rhs.i.i769
+ br i1 false, label %while.end6.i782, label %while.body4.i776
+
+while.body4.i776: ; preds = %land.rhs.i84.i772
+ br i1 false, label %mpath_parent.exit801.thread, label %land.rhs.i84.i772
+
+while.end6.i782: ; preds = %land.rhs.i84.i772
+ br i1 false, label %land.rhs.i99.i785, label %mpath_parent.exit801.thread
+
+land.rhs.i99.i785: ; preds = %while.body13.i789, %while.end6.i782
+ br i1 false, label %while.body13.i789, label %mpath_parent.exit801
+
+while.body13.i789: ; preds = %land.rhs.i99.i785
+ br i1 false, label %land.rhs.i99.i785, label %mpath_parent.exit801.thread
+
+mpath_parent.exit801.thread: ; preds = %while.body13.i789, %while.end6.i782, %while.body4.i776, %while.body.i792, %mpath_parent.exit767
+ br label %if.then.i804
+
+mpath_parent.exit801: ; preds = %land.rhs.i99.i785, %land.rhs.i74.i798
+ br i1 false, label %mstr_eq.exit.i806, label %if.then.i804
+
+mstr_eq.exit.i806: ; preds = %mpath_parent.exit801
+ br i1 false, label %land.rhs.i.i812, label %if.then.i804
+
+if.then.i804: ; preds = %mstr_eq.exit.i806, %mpath_parent.exit801, %mpath_parent.exit801.thread
+ unreachable
+
+land.rhs.i84.us.i: ; preds = %land.rhs.i.i812, %while.body4.us.i
+ switch i8 0, label %while.body4.us.i [
+ i8 92, label %while.end6.i817
+ i8 47, label %while.end6.i817
+ ]
+
+while.body4.us.i: ; preds = %land.rhs.i84.us.i
+ br i1 false, label %mpath_parent.exit820, label %land.rhs.i84.us.i
+
+land.rhs.i.i812: ; preds = %mstr_eq.exit.i806
+ br label %land.rhs.i84.us.i
+
+land.rhs.i74.us.i: ; preds = %while.body.us.i
+ %0 = insertvalue [2 x i32] %0, i32 0, 1
+ %path.coerce.fca.0.extract.i75.us.i = extractvalue [2 x i32] %0, 0
+ switch i8 0, label %mpath_parent.exit820 [
+ i8 92, label %while.body.us.i
+ i8 47, label %while.body.us.i
+ ]
+
+while.body.us.i: ; preds = %land.rhs.i74.us.i, %land.rhs.i74.us.i
+ br i1 false, label %mpath_parent.exit820, label %land.rhs.i74.us.i
+
+while.end6.i817: ; preds = %land.rhs.i84.us.i, %land.rhs.i84.us.i
+ br i1 false, label %land.rhs.i99.us.i, label %mpath_parent.exit820
+
+land.rhs.i99.us.i: ; preds = %while.body13.us.i, %while.end6.i817
+ switch i8 0, label %mpath_parent.exit820 [
+ i8 92, label %while.body13.us.i
+ i8 47, label %while.body13.us.i
+ ]
+
+while.body13.us.i: ; preds = %land.rhs.i99.us.i, %land.rhs.i99.us.i
+ br i1 false, label %land.rhs.i99.us.i, label %mpath_parent.exit820
+
+mpath_parent.exit820: ; preds = %while.body13.us.i, %land.rhs.i99.us.i, %while.end6.i817, %while.body.us.i, %land.rhs.i74.us.i, %while.body4.us.i
+ %path.coerce.fca.0.extract.sink.i814 = phi i32 [ 0, %while.end6.i817 ], [ %path.coerce.fca.0.extract.i75.us.i, %land.rhs.i74.us.i ], [ 0, %while.body.us.i ], [ 0, %while.body13.us.i ], [ 0, %land.rhs.i99.us.i ], [ 0, %while.body4.us.i ]
+ br i1 false, label %mstr_eq.exit.i826, label %if.then.i824
+
+mstr_eq.exit.i826: ; preds = %mpath_parent.exit820
+ br i1 false, label %land.rhs.i.i832, label %if.then.i824
+
+if.then.i824: ; preds = %mstr_eq.exit.i826, %mpath_parent.exit820
+ unreachable
+
+land.rhs.i.i832: ; preds = %mstr_eq.exit.i826
+ br label %land.rhs.i84.i835
+
+land.rhs.i84.i835: ; preds = %while.body4.i839, %land.rhs.i.i832
+ br i1 false, label %while.end6.i845, label %while.body4.i839
+
+while.body4.i839: ; preds = %land.rhs.i84.i835
+ br i1 false, label %if.then.i871, label %land.rhs.i84.i835
+
+while.end6.i845: ; preds = %land.rhs.i84.i835
+ br i1 false, label %land.rhs.i99.i848, label %land.rhs.i.i866
+
+land.rhs.i99.i848: ; preds = %while.body13.i852, %while.end6.i845
+ br i1 false, label %while.body13.i852, label %land.rhs.i.i866
+
+while.body13.i852: ; preds = %land.rhs.i99.i848
+ br i1 false, label %land.rhs.i99.i848, label %land.rhs.i.i866
+
+if.then.i871: ; preds = %while.body4.i839
+ br label %mpath_join.exit
+
+land.rhs.i.i866: ; preds = %while.body13.i852, %land.rhs.i99.i848, %while.end6.i845
+ br i1 false, label %if.then6.i.i.i, label %if.end9.i
+
+if.then6.i.i.i: ; preds = %land.rhs.i.i866
+ br label %mpath_join.exit
+
+if.end9.i: ; preds = %land.rhs.i.i866
+ br label %mpath_join.exit
+
+mpath_join.exit: ; preds = %if.end9.i, %if.then6.i.i.i, %if.then.i871
+ br i1 false, label %mstr_eq.exit.i879, label %if.then.i877
+
+mstr_eq.exit.i879: ; preds = %mpath_join.exit
+ br i1 false, label %_mstr_assert_.exit882, label %if.then.i877
+
+if.then.i877: ; preds = %mstr_eq.exit.i879, %mpath_join.exit
+ unreachable
+
+_mstr_assert_.exit882: ; preds = %mstr_eq.exit.i879
+ br i1 false, label %mpath_parent.exit917, label %land.rhs.i.i885
+
+land.rhs.i.i885: ; preds = %_mstr_assert_.exit882
+ br i1 false, label %while.body.i908, label %land.rhs.i84.i888
+
+land.rhs.i74.i914: ; preds = %while.body.i908
+ br i1 false, label %while.body.i908, label %mpath_parent.exit917
+
+while.body.i908: ; preds = %land.rhs.i74.i914, %land.rhs.i.i885
+ br i1 false, label %mpath_parent.exit917, label %land.rhs.i74.i914
+
+land.rhs.i84.i888: ; preds = %while.body4.i892, %land.rhs.i.i885
+ br i1 false, label %while.end6.i898, label %while.body4.i892
+
+while.body4.i892: ; preds = %land.rhs.i84.i888
+ br i1 false, label %mpath_parent.exit917, label %land.rhs.i84.i888
+
+while.end6.i898: ; preds = %land.rhs.i84.i888
+ br i1 false, label %land.rhs.i99.i901, label %mpath_parent.exit917
+
+land.rhs.i99.i901: ; preds = %while.body13.i905, %while.end6.i898
+ br i1 false, label %while.body13.i905, label %mpath_parent.exit917
+
+while.body13.i905: ; preds = %land.rhs.i99.i901
+ br i1 false, label %land.rhs.i99.i901, label %mpath_parent.exit917
+
+mpath_parent.exit917: ; preds = %while.body13.i905, %land.rhs.i99.i901, %while.end6.i898, %while.body4.i892, %while.body.i908, %land.rhs.i74.i914, %_mstr_assert_.exit882
+ br i1 false, label %mstr_eq.exit.i923, label %if.then.i921
+
+mstr_eq.exit.i923: ; preds = %mpath_parent.exit917
+ br i1 false, label %_mstr_assert_.exit926, label %if.then.i921
+
+if.then.i921: ; preds = %mstr_eq.exit.i923, %mpath_parent.exit917
+ unreachable
+
+_mstr_assert_.exit926: ; preds = %mstr_eq.exit.i923
+ br i1 false, label %mpath_parent.exit962, label %land.rhs.i.i930
+
+land.rhs.i.i930: ; preds = %_mstr_assert_.exit926
+ br i1 false, label %while.body.i953, label %land.rhs.i84.i933
+
+land.rhs.i74.i959: ; preds = %while.body.i953
+ br i1 false, label %while.body.i953, label %mpath_parent.exit962
+
+while.body.i953: ; preds = %land.rhs.i74.i959, %land.rhs.i.i930
+ br i1 false, label %mpath_parent.exit962, label %land.rhs.i74.i959
+
+land.rhs.i84.i933: ; preds = %while.body4.i937, %land.rhs.i.i930
+ br i1 false, label %while.end6.i943, label %while.body4.i937
+
+while.body4.i937: ; preds = %land.rhs.i84.i933
+ br i1 false, label %mpath_parent.exit962, label %land.rhs.i84.i933
+
+while.end6.i943: ; preds = %land.rhs.i84.i933
+ br i1 false, label %land.rhs.i99.i946, label %mpath_parent.exit962
+
+land.rhs.i99.i946: ; preds = %while.body13.i950, %while.end6.i943
+ br i1 false, label %while.body13.i950, label %mpath_parent.exit962
+
+while.body13.i950: ; preds = %land.rhs.i99.i946
+ br i1 false, label %land.rhs.i99.i946, label %mpath_parent.exit962
+
+mpath_parent.exit962: ; preds = %while.body13.i950, %land.rhs.i99.i946, %while.end6.i943, %while.body4.i937, %while.body.i953, %land.rhs.i74.i959, %_mstr_assert_.exit926
+ br i1 false, label %mstr_eq.exit.i968, label %if.then.i966
+
+mstr_eq.exit.i968: ; preds = %mpath_parent.exit962
+ br i1 false, label %_mstr_assert_.exit971, label %if.then.i966
+
+if.then.i966: ; preds = %mstr_eq.exit.i968, %mpath_parent.exit962
+ unreachable
+
+_mstr_assert_.exit971: ; preds = %mstr_eq.exit.i968
+ br i1 false, label %mpath_parent.exit1007, label %land.rhs.i.i975
+
+land.rhs.i.i975: ; preds = %_mstr_assert_.exit971
+ br i1 false, label %while.body.i998, label %land.rhs.i84.i978
+
+land.rhs.i74.i1004: ; preds = %while.body.i998
+ br i1 false, label %while.body.i998, label %mpath_parent.exit1007
+
+while.body.i998: ; preds = %land.rhs.i74.i1004, %land.rhs.i.i975
+ br i1 false, label %mpath_parent.exit1007, label %land.rhs.i74.i1004
+
+land.rhs.i84.i978: ; preds = %while.body4.i982, %land.rhs.i.i975
+ br i1 false, label %while.end6.i988, label %while.body4.i982
+
+while.body4.i982: ; preds = %land.rhs.i84.i978
+ br i1 false, label %mpath_parent.exit1007, label %land.rhs.i84.i978
+
+while.end6.i988: ; preds = %land.rhs.i84.i978
+ br i1 false, label %land.rhs.i99.i991, label %mpath_parent.exit1007
+
+land.rhs.i99.i991: ; preds = %while.body13.i995, %while.end6.i988
+ br i1 false, label %while.body13.i995, label %mpath_parent.exit1007
+
+while.body13.i995: ; preds = %land.rhs.i99.i991
+ br i1 false, label %land.rhs.i99.i991, label %mpath_parent.exit1007
+
+mpath_parent.exit1007: ; preds = %while.body13.i995, %land.rhs.i99.i991, %while.end6.i988, %while.body4.i982, %while.body.i998, %land.rhs.i74.i1004, %_mstr_assert_.exit971
+ br i1 false, label %mstr_eq.exit.i1013, label %if.then.i1011
+
+mstr_eq.exit.i1013: ; preds = %mpath_parent.exit1007
+ br i1 false, label %_mstr_assert_.exit1016, label %if.then.i1011
+
+if.then.i1011: ; preds = %mstr_eq.exit.i1013, %mpath_parent.exit1007
+ unreachable
+
+_mstr_assert_.exit1016: ; preds = %mstr_eq.exit.i1013
+ br i1 false, label %mpath_parent.exit1052, label %land.rhs.i.i1020
+
+land.rhs.i.i1020: ; preds = %_mstr_assert_.exit1016
+ br i1 false, label %while.body.i1043, label %land.rhs.i84.i1023
+
+land.rhs.i74.i1049: ; preds = %while.body.i1043
+ br i1 false, label %while.body.i1043, label %mpath_parent.exit1052
+
+while.body.i1043: ; preds = %land.rhs.i74.i1049, %land.rhs.i.i1020
+ br i1 false, label %mpath_parent.exit1052, label %land.rhs.i74.i1049
+
+land.rhs.i84.i1023: ; preds = %while.body4.i1027, %land.rhs.i.i1020
+ br i1 false, label %while.end6.i1033, label %while.body4.i1027
+
+while.body4.i1027: ; preds = %land.rhs.i84.i1023
+ br i1 false, label %mpath_parent.exit1052, label %land.rhs.i84.i1023
+
+while.end6.i1033: ; preds = %land.rhs.i84.i1023
+ br i1 false, label %land.rhs.i99.i1036, label %mpath_parent.exit1052
+
+land.rhs.i99.i1036: ; preds = %while.body13.i1040, %while.end6.i1033
+ br i1 false, label %while.body13.i1040, label %mpath_parent.exit1052
+
+while.body13.i1040: ; preds = %land.rhs.i99.i1036
+ br i1 false, label %land.rhs.i99.i1036, label %mpath_parent.exit1052
+
+mpath_parent.exit1052: ; preds = %while.body13.i1040, %land.rhs.i99.i1036, %while.end6.i1033, %while.body4.i1027, %while.body.i1043, %land.rhs.i74.i1049, %_mstr_assert_.exit1016
+ br i1 false, label %mstr_eq.exit.i1058, label %if.then.i1056
+
+mstr_eq.exit.i1058: ; preds = %mpath_parent.exit1052
+ br i1 false, label %_mstr_assert_.exit1061, label %if.then.i1056
+
+if.then.i1056: ; preds = %mstr_eq.exit.i1058, %mpath_parent.exit1052
+ unreachable
+
+_mstr_assert_.exit1061: ; preds = %mstr_eq.exit.i1058
+ br i1 false, label %mpath_parent.exit1097, label %land.rhs.i.i1065
+
+land.rhs.i.i1065: ; preds = %_mstr_assert_.exit1061
+ br i1 false, label %while.body.i1088, label %land.rhs.i84.i1068
+
+land.rhs.i74.i1094: ; preds = %while.body.i1088
+ br i1 false, label %while.body.i1088, label %mpath_parent.exit1097
+
+while.body.i1088: ; preds = %land.rhs.i74.i1094, %land.rhs.i.i1065
+ br i1 false, label %mpath_parent.exit1097, label %land.rhs.i74.i1094
+
+land.rhs.i84.i1068: ; preds = %while.body4.i1072, %land.rhs.i.i1065
+ br i1 false, label %while.end6.i1078, label %while.body4.i1072
+
+while.body4.i1072: ; preds = %land.rhs.i84.i1068
+ br i1 false, label %mpath_parent.exit1097, label %land.rhs.i84.i1068
+
+while.end6.i1078: ; preds = %land.rhs.i84.i1068
+ br i1 false, label %land.rhs.i99.i1081, label %mpath_parent.exit1097
+
+land.rhs.i99.i1081: ; preds = %while.body13.i1085, %while.end6.i1078
+ br i1 false, label %while.body13.i1085, label %mpath_parent.exit1097
+
+while.body13.i1085: ; preds = %land.rhs.i99.i1081
+ br i1 false, label %land.rhs.i99.i1081, label %mpath_parent.exit1097
+
+mpath_parent.exit1097: ; preds = %while.body13.i1085, %land.rhs.i99.i1081, %while.end6.i1078, %while.body4.i1072, %while.body.i1088, %land.rhs.i74.i1094, %_mstr_assert_.exit1061
+ br i1 false, label %mstr_eq.exit.i1103, label %if.then.i1101
+
+mstr_eq.exit.i1103: ; preds = %mpath_parent.exit1097
+ br i1 false, label %_mstr_assert_.exit1106, label %if.then.i1101
+
+if.then.i1101: ; preds = %mstr_eq.exit.i1103, %mpath_parent.exit1097
+ unreachable
+
+_mstr_assert_.exit1106: ; preds = %mstr_eq.exit.i1103
+ br i1 false, label %mpath_parent.exit1142, label %land.rhs.i.i1110
+
+land.rhs.i.i1110: ; preds = %_mstr_assert_.exit1106
+ br i1 false, label %while.body.i1133, label %land.rhs.i84.i1113
+
+land.rhs.i74.i1139: ; preds = %while.body.i1133
+ br i1 false, label %while.body.i1133, label %mpath_parent.exit1142
+
+while.body.i1133: ; preds = %land.rhs.i74.i1139, %land.rhs.i.i1110
+ br i1 false, label %mpath_parent.exit1142, label %land.rhs.i74.i1139
+
+land.rhs.i84.i1113: ; preds = %while.body4.i1117, %land.rhs.i.i1110
+ br i1 false, label %while.end6.i1123, label %while.body4.i1117
+
+while.body4.i1117: ; preds = %land.rhs.i84.i1113
+ br i1 false, label %mpath_parent.exit1142, label %land.rhs.i84.i1113
+
+while.end6.i1123: ; preds = %land.rhs.i84.i1113
+ br i1 false, label %land.rhs.i99.i1126, label %mpath_parent.exit1142
+
+land.rhs.i99.i1126: ; preds = %while.body13.i1130, %while.end6.i1123
+ br i1 false, label %while.body13.i1130, label %mpath_parent.exit1142
+
+while.body13.i1130: ; preds = %land.rhs.i99.i1126
+ br i1 false, label %land.rhs.i99.i1126, label %mpath_parent.exit1142
+
+mpath_parent.exit1142: ; preds = %while.body13.i1130, %land.rhs.i99.i1126, %while.end6.i1123, %while.body4.i1117, %while.body.i1133, %land.rhs.i74.i1139, %_mstr_assert_.exit1106
+ br i1 false, label %mstr_eq.exit.i1148, label %if.then.i1146
+
+mstr_eq.exit.i1148: ; preds = %mpath_parent.exit1142
+ br i1 false, label %_mstr_assert_.exit1151, label %if.then.i1146
+
+if.then.i1146: ; preds = %mstr_eq.exit.i1148, %mpath_parent.exit1142
+ unreachable
+
+_mstr_assert_.exit1151: ; preds = %mstr_eq.exit.i1148
+ br i1 false, label %mpath_parent.exit1187, label %land.rhs.i.i1155
+
+land.rhs.i.i1155: ; preds = %_mstr_assert_.exit1151
+ br i1 false, label %while.body.i1178, label %land.rhs.i84.i1158
+
+land.rhs.i74.i1184: ; preds = %while.body.i1178
+ br i1 false, label %while.body.i1178, label %mpath_parent.exit1187
+
+while.body.i1178: ; preds = %land.rhs.i74.i1184, %land.rhs.i.i1155
+ br i1 false, label %mpath_parent.exit1187, label %land.rhs.i74.i1184
+
+land.rhs.i84.i1158: ; preds = %while.body4.i1162, %land.rhs.i.i1155
+ br i1 false, label %while.end6.i1168, label %while.body4.i1162
+
+while.body4.i1162: ; preds = %land.rhs.i84.i1158
+ br i1 false, label %mpath_parent.exit1187, label %land.rhs.i84.i1158
+
+while.end6.i1168: ; preds = %land.rhs.i84.i1158
+ br i1 false, label %land.rhs.i99.i1171, label %mpath_parent.exit1187
+
+land.rhs.i99.i1171: ; preds = %while.body13.i1175, %while.end6.i1168
+ br i1 false, label %while.body13.i1175, label %mpath_parent.exit1187
+
+while.body13.i1175: ; preds = %land.rhs.i99.i1171
+ br i1 false, label %land.rhs.i99.i1171, label %mpath_parent.exit1187
+
+mpath_parent.exit1187: ; preds = %while.body13.i1175, %land.rhs.i99.i1171, %while.end6.i1168, %while.body4.i1162, %while.body.i1178, %land.rhs.i74.i1184, %_mstr_assert_.exit1151
+ br i1 false, label %mstr_eq.exit.i1193, label %if.then.i1191
+
+mstr_eq.exit.i1193: ; preds = %mpath_parent.exit1187
+ br i1 false, label %_mstr_assert_.exit1196, label %if.then.i1191
+
+if.then.i1191: ; preds = %mstr_eq.exit.i1193, %mpath_parent.exit1187
+ unreachable
+
+_mstr_assert_.exit1196: ; preds = %mstr_eq.exit.i1193
+ br i1 false, label %mpath_parent.exit1232, label %land.rhs.i.i1200
+
+land.rhs.i.i1200: ; preds = %_mstr_assert_.exit1196
+ br i1 false, label %while.body.i1223, label %land.rhs.i84.i1203
+
+land.rhs.i74.i1229: ; preds = %while.body.i1223
+ br i1 false, label %while.body.i1223, label %mpath_parent.exit1232
+
+while.body.i1223: ; preds = %land.rhs.i74.i1229, %land.rhs.i.i1200
+ br i1 false, label %mpath_parent.exit1232, label %land.rhs.i74.i1229
+
+land.rhs.i84.i1203: ; preds = %while.body4.i1207, %land.rhs.i.i1200
+ br i1 false, label %while.end6.i1213, label %while.body4.i1207
+
+while.body4.i1207: ; preds = %land.rhs.i84.i1203
+ br i1 false, label %mpath_parent.exit1232, label %land.rhs.i84.i1203
+
+while.end6.i1213: ; preds = %land.rhs.i84.i1203
+ br i1 false, label %land.rhs.i99.i1216, label %mpath_parent.exit1232
+
+land.rhs.i99.i1216: ; preds = %while.body13.i1220, %while.end6.i1213
+ br i1 false, label %while.body13.i1220, label %mpath_parent.exit1232
+
+while.body13.i1220: ; preds = %land.rhs.i99.i1216
+ br i1 false, label %land.rhs.i99.i1216, label %mpath_parent.exit1232
+
+mpath_parent.exit1232: ; preds = %while.body13.i1220, %land.rhs.i99.i1216, %while.end6.i1213, %while.body4.i1207, %while.body.i1223, %land.rhs.i74.i1229, %_mstr_assert_.exit1196
+ br i1 false, label %mstr_eq.exit.i1238, label %if.then.i1236
+
+mstr_eq.exit.i1238: ; preds = %mpath_parent.exit1232
+ br i1 false, label %_mstr_assert_.exit1241, label %if.then.i1236
+
+if.then.i1236: ; preds = %mstr_eq.exit.i1238, %mpath_parent.exit1232
+ unreachable
+
+_mstr_assert_.exit1241: ; preds = %mstr_eq.exit.i1238
+ br i1 false, label %mpath_parent.exit1277, label %land.rhs.i.i1245
+
+land.rhs.i.i1245: ; preds = %_mstr_assert_.exit1241
+ br i1 false, label %while.body.i1268, label %land.rhs.i84.i1248
+
+land.rhs.i74.i1274: ; preds = %while.body.i1268
+ br i1 false, label %while.body.i1268, label %mpath_parent.exit1277
+
+while.body.i1268: ; preds = %land.rhs.i74.i1274, %land.rhs.i.i1245
+ br i1 false, label %mpath_parent.exit1277, label %land.rhs.i74.i1274
+
+land.rhs.i84.i1248: ; preds = %while.body4.i1252, %land.rhs.i.i1245
+ br i1 false, label %while.end6.i1258, label %while.body4.i1252
+
+while.body4.i1252: ; preds = %land.rhs.i84.i1248
+ br i1 false, label %mpath_parent.exit1277, label %land.rhs.i84.i1248
+
+while.end6.i1258: ; preds = %land.rhs.i84.i1248
+ br i1 false, label %land.rhs.i99.i1261, label %mpath_parent.exit1277
+
+land.rhs.i99.i1261: ; preds = %while.body13.i1265, %while.end6.i1258
+ br i1 false, label %while.body13.i1265, label %mpath_parent.exit1277
+
+while.body13.i1265: ; preds = %land.rhs.i99.i1261
+ br i1 false, label %land.rhs.i99.i1261, label %mpath_parent.exit1277
+
+mpath_parent.exit1277: ; preds = %while.body13.i1265, %land.rhs.i99.i1261, %while.end6.i1258, %while.body4.i1252, %while.body.i1268, %land.rhs.i74.i1274, %_mstr_assert_.exit1241
+ br i1 false, label %mstr_eq.exit.i1283, label %if.then.i1281
+
+mstr_eq.exit.i1283: ; preds = %mpath_parent.exit1277
+ br i1 false, label %_mstr_assert_.exit1286, label %if.then.i1281
+
+if.then.i1281: ; preds = %mstr_eq.exit.i1283, %mpath_parent.exit1277
+ unreachable
+
+_mstr_assert_.exit1286: ; preds = %mstr_eq.exit.i1283
+ br i1 false, label %mpath_parent.exit1322, label %land.rhs.i.i1290
+
+land.rhs.i.i1290: ; preds = %_mstr_assert_.exit1286
+ br i1 false, label %while.body.i1313, label %land.rhs.i84.i1293
+
+land.rhs.i74.i1319: ; preds = %while.body.i1313
+ br i1 false, label %while.body.i1313, label %mpath_parent.exit1322
+
+while.body.i1313: ; preds = %land.rhs.i74.i1319, %land.rhs.i.i1290
+ br i1 false, label %mpath_parent.exit1322, label %land.rhs.i74.i1319
+
+land.rhs.i84.i1293: ; preds = %while.body4.i1297, %land.rhs.i.i1290
+ br i1 false, label %while.end6.i1303, label %while.body4.i1297
+
+while.body4.i1297: ; preds = %land.rhs.i84.i1293
+ br i1 false, label %mpath_parent.exit1322, label %land.rhs.i84.i1293
+
+while.end6.i1303: ; preds = %land.rhs.i84.i1293
+ br i1 false, label %land.rhs.i99.i1306, label %mpath_parent.exit1322
+
+land.rhs.i99.i1306: ; preds = %while.body13.i1310, %while.end6.i1303
+ br i1 false, label %while.body13.i1310, label %mpath_parent.exit1322
+
+while.body13.i1310: ; preds = %land.rhs.i99.i1306
+ br i1 false, label %land.rhs.i99.i1306, label %mpath_parent.exit1322
+
+mpath_parent.exit1322: ; preds = %while.body13.i1310, %land.rhs.i99.i1306, %while.end6.i1303, %while.body4.i1297, %while.body.i1313, %land.rhs.i74.i1319, %_mstr_assert_.exit1286
+ br i1 false, label %mstr_eq.exit.i1328, label %if.then.i1326
+
+mstr_eq.exit.i1328: ; preds = %mpath_parent.exit1322
+ br i1 false, label %_mstr_assert_.exit1331, label %if.then.i1326
+
+if.then.i1326: ; preds = %mstr_eq.exit.i1328, %mpath_parent.exit1322
+ unreachable
+
+_mstr_assert_.exit1331: ; preds = %mstr_eq.exit.i1328
+ br i1 false, label %mpath_parent.exit1367, label %land.rhs.i.i1335
+
+land.rhs.i.i1335: ; preds = %_mstr_assert_.exit1331
+ br i1 false, label %while.body.i1358, label %land.rhs.i84.i1338
+
+land.rhs.i74.i1364: ; preds = %while.body.i1358
+ br i1 false, label %while.body.i1358, label %mpath_parent.exit1367
+
+while.body.i1358: ; preds = %land.rhs.i74.i1364, %land.rhs.i.i1335
+ br i1 false, label %mpath_parent.exit1367, label %land.rhs.i74.i1364
+
+land.rhs.i84.i1338: ; preds = %while.body4.i1342, %land.rhs.i.i1335
+ br i1 false, label %while.end6.i1348, label %while.body4.i1342
+
+while.body4.i1342: ; preds = %land.rhs.i84.i1338
+ br i1 false, label %mpath_parent.exit1367, label %land.rhs.i84.i1338
+
+while.end6.i1348: ; preds = %land.rhs.i84.i1338
+ br i1 false, label %land.rhs.i99.i1351, label %mpath_parent.exit1367
+
+land.rhs.i99.i1351: ; preds = %while.body13.i1355, %while.end6.i1348
+ br i1 false, label %while.body13.i1355, label %mpath_parent.exit1367
+
+while.body13.i1355: ; preds = %land.rhs.i99.i1351
+ br i1 false, label %land.rhs.i99.i1351, label %mpath_parent.exit1367
+
+mpath_parent.exit1367: ; preds = %while.body13.i1355, %land.rhs.i99.i1351, %while.end6.i1348, %while.body4.i1342, %while.body.i1358, %land.rhs.i74.i1364, %_mstr_assert_.exit1331
+ br i1 false, label %mstr_eq.exit.i1373, label %if.then.i1371
+
+mstr_eq.exit.i1373: ; preds = %mpath_parent.exit1367
+ br i1 false, label %_mstr_assert_.exit1376, label %if.then.i1371
+
+if.then.i1371: ; preds = %mstr_eq.exit.i1373, %mpath_parent.exit1367
+ unreachable
+
+_mstr_assert_.exit1376: ; preds = %mstr_eq.exit.i1373
+ br i1 false, label %mpath_filename.exit, label %if.end.i
+
+if.end.i: ; preds = %_mstr_assert_.exit1376
+ br label %while.cond.i
+
+while.cond.i: ; preds = %land.rhs.i, %if.end.i
+ br i1 false, label %while.end.i, label %land.rhs.i
+
+land.rhs.i: ; preds = %while.cond.i
+ br i1 false, label %while.end.i, label %while.cond.i
+
+while.end.i: ; preds = %land.rhs.i, %while.cond.i
+ br i1 false, label %mpath_filename.exit, label %if.end8.i
+
+if.end8.i: ; preds = %while.end.i
+ br label %mpath_filename.exit
+
+mpath_filename.exit: ; preds = %if.end8.i, %while.end.i, %_mstr_assert_.exit1376
+ br i1 false, label %mstr_eq.exit.i1391, label %if.then.i1389
+
+mstr_eq.exit.i1391: ; preds = %mpath_filename.exit
+ br i1 false, label %_mstr_assert_.exit1394, label %if.then.i1389
+
+if.then.i1389: ; preds = %mstr_eq.exit.i1391, %mpath_filename.exit
+ unreachable
+
+_mstr_assert_.exit1394: ; preds = %mstr_eq.exit.i1391
+ br i1 false, label %mpath_filename.exit1419, label %if.end.i1398
+
+if.end.i1398: ; preds = %_mstr_assert_.exit1394
+ br label %while.cond.i1400
+
+while.cond.i1400: ; preds = %land.rhs.i1403, %if.end.i1398
+ br i1 false, label %while.end.i1406, label %land.rhs.i1403
+
+land.rhs.i1403: ; preds = %while.cond.i1400
+ br i1 false, label %while.end.i1406, label %while.cond.i1400
+
+while.end.i1406: ; preds = %land.rhs.i1403, %while.cond.i1400
+ br i1 false, label %mpath_filename.exit1419, label %if.end8.i1411
+
+if.end8.i1411: ; preds = %while.end.i1406
+ br label %mpath_filename.exit1419
+
+mpath_filename.exit1419: ; preds = %if.end8.i1411, %while.end.i1406, %_mstr_assert_.exit1394
+ br i1 false, label %mstr_eq.exit.i1425, label %if.then.i1423
+
+mstr_eq.exit.i1425: ; preds = %mpath_filename.exit1419
+ br i1 false, label %_mstr_assert_.exit1428, label %if.then.i1423
+
+if.then.i1423: ; preds = %mstr_eq.exit.i1425, %mpath_filename.exit1419
+ unreachable
+
+_mstr_assert_.exit1428: ; preds = %mstr_eq.exit.i1425
+ br i1 false, label %mpath_filename.exit1453, label %if.end.i1432
+
+if.end.i1432: ; preds = %_mstr_assert_.exit1428
+ br label %while.cond.i1434
+
+while.cond.i1434: ; preds = %land.rhs.i1437, %if.end.i1432
+ br i1 false, label %while.end.i1440, label %land.rhs.i1437
+
+land.rhs.i1437: ; preds = %while.cond.i1434
+ br i1 false, label %while.end.i1440, label %while.cond.i1434
+
+while.end.i1440: ; preds = %land.rhs.i1437, %while.cond.i1434
+ br i1 false, label %mpath_filename.exit1453, label %if.end8.i1445
+
+if.end8.i1445: ; preds = %while.end.i1440
+ br label %mpath_filename.exit1453
+
+mpath_filename.exit1453: ; preds = %if.end8.i1445, %while.end.i1440, %_mstr_assert_.exit1428
+ br i1 false, label %mstr_eq.exit.i1459, label %if.then.i1457
+
+mstr_eq.exit.i1459: ; preds = %mpath_filename.exit1453
+ br i1 false, label %_mstr_assert_.exit1462, label %if.then.i1457
+
+if.then.i1457: ; preds = %mstr_eq.exit.i1459, %mpath_filename.exit1453
+ unreachable
+
+_mstr_assert_.exit1462: ; preds = %mstr_eq.exit.i1459
+ br i1 false, label %mpath_filename.exit1487, label %if.end.i1466
+
+if.end.i1466: ; preds = %_mstr_assert_.exit1462
+ br label %while.cond.i1468
+
+while.cond.i1468: ; preds = %land.rhs.i1471, %if.end.i1466
+ br i1 false, label %while.end.i1474, label %land.rhs.i1471
+
+land.rhs.i1471: ; preds = %while.cond.i1468
+ br i1 false, label %while.end.i1474, label %while.cond.i1468
+
+while.end.i1474: ; preds = %land.rhs.i1471, %while.cond.i1468
+ br i1 false, label %mpath_filename.exit1487, label %if.end8.i1479
+
+if.end8.i1479: ; preds = %while.end.i1474
+ br label %mpath_filename.exit1487
+
+mpath_filename.exit1487: ; preds = %if.end8.i1479, %while.end.i1474, %_mstr_assert_.exit1462
+ br i1 false, label %mstr_eq.exit.i1493, label %if.then.i1491
+
+mstr_eq.exit.i1493: ; preds = %mpath_filename.exit1487
+ br i1 false, label %_mstr_assert_.exit1496, label %if.then.i1491
+
+if.then.i1491: ; preds = %mstr_eq.exit.i1493, %mpath_filename.exit1487
+ unreachable
+
+_mstr_assert_.exit1496: ; preds = %mstr_eq.exit.i1493
+ br i1 false, label %mpath_filename.exit1521, label %if.end.i1500
+
+if.end.i1500: ; preds = %_mstr_assert_.exit1496
+ br label %while.cond.i1502
+
+while.cond.i1502: ; preds = %land.rhs.i1505, %if.end.i1500
+ br i1 false, label %while.end.i1508, label %land.rhs.i1505
+
+land.rhs.i1505: ; preds = %while.cond.i1502
+ br i1 false, label %while.end.i1508, label %while.cond.i1502
+
+while.end.i1508: ; preds = %land.rhs.i1505, %while.cond.i1502
+ br i1 false, label %mpath_filename.exit1521, label %if.end8.i1513
+
+if.end8.i1513: ; preds = %while.end.i1508
+ br label %mpath_filename.exit1521
+
+mpath_filename.exit1521: ; preds = %if.end8.i1513, %while.end.i1508, %_mstr_assert_.exit1496
+ br i1 false, label %mstr_eq.exit.i1527, label %if.then.i1525
+
+mstr_eq.exit.i1527: ; preds = %mpath_filename.exit1521
+ br i1 false, label %_mstr_assert_.exit1530, label %if.then.i1525
+
+if.then.i1525: ; preds = %mstr_eq.exit.i1527, %mpath_filename.exit1521
+ unreachable
+
+_mstr_assert_.exit1530: ; preds = %mstr_eq.exit.i1527
+ br i1 false, label %mpath_filename.exit1555, label %if.end.i1534
+
+if.end.i1534: ; preds = %_mstr_assert_.exit1530
+ br label %while.cond.i1536
+
+while.cond.i1536: ; preds = %land.rhs.i1539, %if.end.i1534
+ br i1 false, label %while.end.i1542, label %land.rhs.i1539
+
+land.rhs.i1539: ; preds = %while.cond.i1536
+ br i1 false, label %while.end.i1542, label %while.cond.i1536
+
+while.end.i1542: ; preds = %land.rhs.i1539, %while.cond.i1536
+ br i1 false, label %mpath_filename.exit1555, label %if.end8.i1547
+
+if.end8.i1547: ; preds = %while.end.i1542
+ br label %mpath_filename.exit1555
+
+mpath_filename.exit1555: ; preds = %if.end8.i1547, %while.end.i1542, %_mstr_assert_.exit1530
+ br i1 false, label %mstr_eq.exit.i1561, label %if.then.i1559
+
+mstr_eq.exit.i1561: ; preds = %mpath_filename.exit1555
+ br i1 false, label %_mstr_assert_.exit1564, label %if.then.i1559
+
+if.then.i1559: ; preds = %mstr_eq.exit.i1561, %mpath_filename.exit1555
+ unreachable
+
+_mstr_assert_.exit1564: ; preds = %mstr_eq.exit.i1561
+ br i1 false, label %mpath_filename.exit1589, label %if.end.i1568
+
+if.end.i1568: ; preds = %_mstr_assert_.exit1564
+ br label %while.cond.i1570
+
+while.cond.i1570: ; preds = %land.rhs.i1573, %if.end.i1568
+ br i1 false, label %while.end.i1576, label %land.rhs.i1573
+
+land.rhs.i1573: ; preds = %while.cond.i1570
+ br i1 false, label %while.end.i1576, label %while.cond.i1570
+
+while.end.i1576: ; preds = %land.rhs.i1573, %while.cond.i1570
+ br i1 false, label %mpath_filename.exit1589, label %if.end8.i1581
+
+if.end8.i1581: ; preds = %while.end.i1576
+ br label %mpath_filename.exit1589
+
+mpath_filename.exit1589: ; preds = %if.end8.i1581, %while.end.i1576, %_mstr_assert_.exit1564
+ br i1 false, label %mstr_eq.exit.i1595, label %if.then.i1593
+
+mstr_eq.exit.i1595: ; preds = %mpath_filename.exit1589
+ br i1 false, label %_mstr_assert_.exit1598, label %if.then.i1593
+
+if.then.i1593: ; preds = %mstr_eq.exit.i1595, %mpath_filename.exit1589
+ unreachable
+
+_mstr_assert_.exit1598: ; preds = %mstr_eq.exit.i1595
+ br i1 false, label %mpath_filename.exit1623, label %if.end.i1602
+
+if.end.i1602: ; preds = %_mstr_assert_.exit1598
+ br label %while.cond.i1604
+
+while.cond.i1604: ; preds = %land.rhs.i1607, %if.end.i1602
+ br i1 false, label %while.end.i1610, label %land.rhs.i1607
+
+land.rhs.i1607: ; preds = %while.cond.i1604
+ br i1 false, label %while.end.i1610, label %while.cond.i1604
+
+while.end.i1610: ; preds = %land.rhs.i1607, %while.cond.i1604
+ br i1 false, label %mpath_filename.exit1623, label %if.end8.i1615
+
+if.end8.i1615: ; preds = %while.end.i1610
+ br label %mpath_filename.exit1623
+
+mpath_filename.exit1623: ; preds = %if.end8.i1615, %while.end.i1610, %_mstr_assert_.exit1598
+ br i1 false, label %mstr_eq.exit.i1629, label %if.then.i1627
+
+mstr_eq.exit.i1629: ; preds = %mpath_filename.exit1623
+ br i1 false, label %_mstr_assert_.exit1632, label %if.then.i1627
+
+if.then.i1627: ; preds = %mstr_eq.exit.i1629, %mpath_filename.exit1623
+ unreachable
+
+_mstr_assert_.exit1632: ; preds = %mstr_eq.exit.i1629
+ br i1 false, label %mstr_eq.exit.i1645, label %if.then.i1643
+
+mstr_eq.exit.i1645: ; preds = %_mstr_assert_.exit1632
+ br i1 false, label %_mstr_assert_.exit1648, label %if.then.i1643
+
+if.then.i1643: ; preds = %mstr_eq.exit.i1645, %_mstr_assert_.exit1632
+ unreachable
+
+_mstr_assert_.exit1648: ; preds = %mstr_eq.exit.i1645
+ br i1 false, label %mstr_eq.exit.i1672, label %if.then.i1670
+
+mstr_eq.exit.i1672: ; preds = %_mstr_assert_.exit1648
+ br i1 false, label %_mstr_assert_.exit1675, label %if.then.i1670
+
+if.then.i1670: ; preds = %mstr_eq.exit.i1672, %_mstr_assert_.exit1648
+ unreachable
+
+_mstr_assert_.exit1675: ; preds = %mstr_eq.exit.i1672
+ br i1 false, label %mstr_eq.exit.i1699, label %if.then.i1697
+
+mstr_eq.exit.i1699: ; preds = %_mstr_assert_.exit1675
+ br i1 false, label %_mstr_assert_.exit1702, label %if.then.i1697
+
+if.then.i1697: ; preds = %mstr_eq.exit.i1699, %_mstr_assert_.exit1675
+ unreachable
+
+_mstr_assert_.exit1702: ; preds = %mstr_eq.exit.i1699
+ br i1 false, label %mstr_eq.exit.i1726, label %if.then.i1724
+
+mstr_eq.exit.i1726: ; preds = %_mstr_assert_.exit1702
+ br i1 false, label %_mstr_assert_.exit1729, label %if.then.i1724
+
+if.then.i1724: ; preds = %mstr_eq.exit.i1726, %_mstr_assert_.exit1702
+ unreachable
+
+_mstr_assert_.exit1729: ; preds = %mstr_eq.exit.i1726
+ br i1 false, label %mstr_eq.exit.i1753, label %if.then.i1751
+
+mstr_eq.exit.i1753: ; preds = %_mstr_assert_.exit1729
+ br i1 false, label %_mstr_assert_.exit1756, label %if.then.i1751
+
+if.then.i1751: ; preds = %mstr_eq.exit.i1753, %_mstr_assert_.exit1729
+ unreachable
+
+_mstr_assert_.exit1756: ; preds = %mstr_eq.exit.i1753
+ ret i32 0
+
+; uselistorder directives
+ uselistorder [2 x i32] %0, { 1, 0 }
+}
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.lifetime.start.p0(ptr captures(none)) #0
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.lifetime.end.p0(ptr captures(none)) #0
+
+; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.memcpy.p0.p0.i32(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i32, i1 immarg) #1
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite)
+declare void @llvm.experimental.noalias.scope.decl(metadata) #2
+
+; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none)
+declare i32 @llvm.umin.i32(i32, i32) #3
+
+attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
+attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
+attributes #2 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) }
+attributes #3 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) }
More information about the llvm-commits
mailing list