[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