It's not necessary to do rounding for alloca operations when the requested
alignment is equal to the stack alignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40004 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/Transforms/SimplifyCFG/2006-06-12-InfLoop.ll b/test/Transforms/SimplifyCFG/2006-06-12-InfLoop.ll
new file mode 100644
index 0000000..c9b1858
--- /dev/null
+++ b/test/Transforms/SimplifyCFG/2006-06-12-InfLoop.ll
@@ -0,0 +1,613 @@
+; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg -disable-output
+
+void %main(int %c) {
+entry:
+	%tmp.9 = seteq int %c, 2		; <bool> [#uses=1]
+	br bool %tmp.9, label %endif.0, label %then.0
+
+then.0:		; preds = %entry
+	ret void
+
+endif.0:		; preds = %entry
+	br bool false, label %then.1, label %endif.1
+
+then.1:		; preds = %endif.0
+	ret void
+
+endif.1:		; preds = %endif.0
+	br bool false, label %then.2, label %endif.2
+
+then.2:		; preds = %endif.1
+	ret void
+
+endif.2:		; preds = %endif.1
+	br bool false, label %then.3, label %loopentry.0
+
+then.3:		; preds = %endif.2
+	ret void
+
+loopentry.0:		; preds = %endif.2
+	br bool false, label %no_exit.0.preheader, label %loopexit.0
+
+no_exit.0.preheader:		; preds = %loopentry.0
+	br label %no_exit.0
+
+no_exit.0:		; preds = %endif.4, %no_exit.0.preheader
+	br bool false, label %then.4, label %endif.4
+
+then.4:		; preds = %no_exit.0
+	ret void
+
+endif.4:		; preds = %no_exit.0
+	br bool false, label %no_exit.0, label %loopexit.0.loopexit
+
+loopexit.0.loopexit:		; preds = %endif.4
+	br label %loopexit.0
+
+loopexit.0:		; preds = %loopexit.0.loopexit, %loopentry.0
+	br bool false, label %then.5, label %loopentry.1
+
+then.5:		; preds = %loopexit.0
+	ret void
+
+loopentry.1:		; preds = %loopexit.0
+	%tmp.143 = setgt int 0, 0		; <bool> [#uses=4]
+	br bool %tmp.143, label %no_exit.1.preheader, label %loopexit.1
+
+no_exit.1.preheader:		; preds = %loopentry.1
+	br label %no_exit.1
+
+no_exit.1:		; preds = %endif.6, %no_exit.1.preheader
+	br bool false, label %then.6, label %shortcirc_next.3
+
+shortcirc_next.3:		; preds = %no_exit.1
+	br bool false, label %then.6, label %shortcirc_next.4
+
+shortcirc_next.4:		; preds = %shortcirc_next.3
+	br bool false, label %then.6, label %endif.6
+
+then.6:		; preds = %shortcirc_next.4, %shortcirc_next.3, %no_exit.1
+	ret void
+
+endif.6:		; preds = %shortcirc_next.4
+	br bool false, label %no_exit.1, label %loopexit.1.loopexit
+
+loopexit.1.loopexit:		; preds = %endif.6
+	br label %loopexit.1
+
+loopexit.1:		; preds = %loopexit.1.loopexit, %loopentry.1
+	br bool false, label %then.i, label %loopentry.0.i
+
+then.i:		; preds = %loopexit.1
+	ret void
+
+loopentry.0.i:		; preds = %loopexit.1
+	br bool %tmp.143, label %no_exit.0.i.preheader, label %readvector.exit
+
+no_exit.0.i.preheader:		; preds = %loopentry.0.i
+	br label %no_exit.0.i
+
+no_exit.0.i:		; preds = %loopexit.1.i, %no_exit.0.i.preheader
+	br bool false, label %no_exit.1.i.preheader, label %loopexit.1.i
+
+no_exit.1.i.preheader:		; preds = %no_exit.0.i
+	br label %no_exit.1.i
+
+no_exit.1.i:		; preds = %loopexit.2.i, %no_exit.1.i.preheader
+	br bool false, label %no_exit.2.i.preheader, label %loopexit.2.i
+
+no_exit.2.i.preheader:		; preds = %no_exit.1.i
+	br label %no_exit.2.i
+
+no_exit.2.i:		; preds = %no_exit.2.i, %no_exit.2.i.preheader
+	br bool false, label %no_exit.2.i, label %loopexit.2.i.loopexit
+
+loopexit.2.i.loopexit:		; preds = %no_exit.2.i
+	br label %loopexit.2.i
+
+loopexit.2.i:		; preds = %loopexit.2.i.loopexit, %no_exit.1.i
+	br bool false, label %no_exit.1.i, label %loopexit.1.i.loopexit
+
+loopexit.1.i.loopexit:		; preds = %loopexit.2.i
+	br label %loopexit.1.i
+
+loopexit.1.i:		; preds = %loopexit.1.i.loopexit, %no_exit.0.i
+	br bool false, label %no_exit.0.i, label %readvector.exit.loopexit
+
+readvector.exit.loopexit:		; preds = %loopexit.1.i
+	br label %readvector.exit
+
+readvector.exit:		; preds = %readvector.exit.loopexit, %loopentry.0.i
+	br bool %tmp.143, label %loopentry.1.preheader.i, label %loopexit.0.i
+
+loopentry.1.preheader.i:		; preds = %readvector.exit
+	br label %loopentry.1.outer.i
+
+loopentry.1.outer.i:		; preds = %loopexit.1.i110, %loopentry.1.preheader.i
+	br label %loopentry.1.i85
+
+loopentry.1.i85.loopexit:		; preds = %hamming.exit16.i
+	br label %loopentry.1.i85
+
+loopentry.1.i85:		; preds = %loopentry.1.i85.loopexit, %loopentry.1.outer.i
+	br bool false, label %no_exit.1.preheader.i, label %loopexit.1.i110.loopexit1
+
+no_exit.1.preheader.i:		; preds = %loopentry.1.i85
+	br label %no_exit.1.i87
+
+no_exit.1.i87:		; preds = %then.1.i107, %no_exit.1.preheader.i
+	br bool false, label %no_exit.i.i101.preheader, label %hamming.exit.i104
+
+no_exit.i.i101.preheader:		; preds = %no_exit.1.i87
+	br label %no_exit.i.i101
+
+no_exit.i.i101:		; preds = %no_exit.i.i101, %no_exit.i.i101.preheader
+	br bool false, label %no_exit.i.i101, label %hamming.exit.i104.loopexit
+
+hamming.exit.i104.loopexit:		; preds = %no_exit.i.i101
+	br label %hamming.exit.i104
+
+hamming.exit.i104:		; preds = %hamming.exit.i104.loopexit, %no_exit.1.i87
+	br bool false, label %no_exit.i15.i.preheader, label %hamming.exit16.i
+
+no_exit.i15.i.preheader:		; preds = %hamming.exit.i104
+	br label %no_exit.i15.i
+
+no_exit.i15.i:		; preds = %no_exit.i15.i, %no_exit.i15.i.preheader
+	br bool false, label %no_exit.i15.i, label %hamming.exit16.i.loopexit
+
+hamming.exit16.i.loopexit:		; preds = %no_exit.i15.i
+	br label %hamming.exit16.i
+
+hamming.exit16.i:		; preds = %hamming.exit16.i.loopexit, %hamming.exit.i104
+	br bool false, label %loopentry.1.i85.loopexit, label %then.1.i107
+
+then.1.i107:		; preds = %hamming.exit16.i
+	br bool false, label %no_exit.1.i87, label %loopexit.1.i110.loopexit
+
+loopexit.1.i110.loopexit:		; preds = %then.1.i107
+	br label %loopexit.1.i110
+
+loopexit.1.i110.loopexit1:		; preds = %loopentry.1.i85
+	br label %loopexit.1.i110
+
+loopexit.1.i110:		; preds = %loopexit.1.i110.loopexit1, %loopexit.1.i110.loopexit
+	br bool false, label %loopentry.1.outer.i, label %loopexit.0.i.loopexit
+
+loopexit.0.i.loopexit:		; preds = %loopexit.1.i110
+	br label %loopexit.0.i
+
+loopexit.0.i:		; preds = %loopexit.0.i.loopexit, %readvector.exit
+	br bool false, label %UnifiedReturnBlock.i113, label %then.2.i112
+
+then.2.i112:		; preds = %loopexit.0.i
+	br label %checkham.exit
+
+UnifiedReturnBlock.i113:		; preds = %loopexit.0.i
+	br label %checkham.exit
+
+checkham.exit:		; preds = %UnifiedReturnBlock.i113, %then.2.i112
+	br bool false, label %loopentry.1.i14.preheader, label %loopentry.3.i.preheader
+
+loopentry.1.i14.preheader:		; preds = %checkham.exit
+	br label %loopentry.1.i14
+
+loopentry.1.i14:		; preds = %loopexit.1.i18, %loopentry.1.i14.preheader
+	br bool false, label %no_exit.1.i16.preheader, label %loopexit.1.i18
+
+no_exit.1.i16.preheader:		; preds = %loopentry.1.i14
+	br label %no_exit.1.i16
+
+no_exit.1.i16:		; preds = %no_exit.1.i16, %no_exit.1.i16.preheader
+	br bool false, label %no_exit.1.i16, label %loopexit.1.i18.loopexit
+
+loopexit.1.i18.loopexit:		; preds = %no_exit.1.i16
+	br label %loopexit.1.i18
+
+loopexit.1.i18:		; preds = %loopexit.1.i18.loopexit, %loopentry.1.i14
+	br bool false, label %loopentry.1.i14, label %loopentry.3.i.loopexit
+
+loopentry.3.i.loopexit:		; preds = %loopexit.1.i18
+	br label %loopentry.3.i.preheader
+
+loopentry.3.i.preheader:		; preds = %loopentry.3.i.loopexit, %checkham.exit
+	br label %loopentry.3.i
+
+loopentry.3.i:		; preds = %endif.1.i, %loopentry.3.i.preheader
+	br bool false, label %loopentry.4.i.preheader, label %endif.1.i
+
+loopentry.4.i.preheader:		; preds = %loopentry.3.i
+	br label %loopentry.4.i
+
+loopentry.4.i:		; preds = %loopexit.4.i, %loopentry.4.i.preheader
+	br bool false, label %no_exit.4.i.preheader, label %loopexit.4.i
+
+no_exit.4.i.preheader:		; preds = %loopentry.4.i
+	br label %no_exit.4.i
+
+no_exit.4.i:		; preds = %no_exit.4.i.backedge, %no_exit.4.i.preheader
+	br bool false, label %endif.0.i, label %else.i
+
+else.i:		; preds = %no_exit.4.i
+	br bool false, label %no_exit.4.i.backedge, label %loopexit.4.i.loopexit
+
+no_exit.4.i.backedge:		; preds = %endif.0.i, %else.i
+	br label %no_exit.4.i
+
+endif.0.i:		; preds = %no_exit.4.i
+	br bool false, label %no_exit.4.i.backedge, label %loopexit.4.i.loopexit
+
+loopexit.4.i.loopexit:		; preds = %endif.0.i, %else.i
+	br label %loopexit.4.i
+
+loopexit.4.i:		; preds = %loopexit.4.i.loopexit, %loopentry.4.i
+	br bool false, label %loopentry.4.i, label %endif.1.i.loopexit
+
+endif.1.i.loopexit:		; preds = %loopexit.4.i
+	br label %endif.1.i
+
+endif.1.i:		; preds = %endif.1.i.loopexit, %loopentry.3.i
+	%exitcond = seteq uint 0, 10		; <bool> [#uses=1]
+	br bool %exitcond, label %generateT.exit, label %loopentry.3.i
+
+generateT.exit:		; preds = %endif.1.i
+	br bool false, label %then.0.i, label %loopentry.1.i30.preheader
+
+then.0.i:		; preds = %generateT.exit
+	ret void
+
+loopentry.1.i30.loopexit:		; preds = %loopexit.3.i
+	br label %loopentry.1.i30.backedge
+
+loopentry.1.i30.preheader:		; preds = %generateT.exit
+	br label %loopentry.1.i30
+
+loopentry.1.i30:		; preds = %loopentry.1.i30.backedge, %loopentry.1.i30.preheader
+	br bool %tmp.143, label %no_exit.0.i31.preheader, label %loopentry.1.i30.backedge
+
+loopentry.1.i30.backedge:		; preds = %loopentry.1.i30, %loopentry.1.i30.loopexit
+	br label %loopentry.1.i30
+
+no_exit.0.i31.preheader:		; preds = %loopentry.1.i30
+	br label %no_exit.0.i31
+
+no_exit.0.i31:		; preds = %loopexit.3.i, %no_exit.0.i31.preheader
+	br bool false, label %then.1.i, label %else.0.i
+
+then.1.i:		; preds = %no_exit.0.i31
+	br bool undef, label %then.0.i29, label %loopentry.0.i31
+
+then.0.i29:		; preds = %then.1.i
+	unreachable
+
+loopentry.0.i31:		; preds = %then.1.i
+	br bool false, label %no_exit.0.i38.preheader, label %loopentry.1.i.preheader
+
+no_exit.0.i38.preheader:		; preds = %loopentry.0.i31
+	br label %no_exit.0.i38
+
+no_exit.0.i38:		; preds = %no_exit.0.i38, %no_exit.0.i38.preheader
+	br bool undef, label %no_exit.0.i38, label %loopentry.1.i.preheader.loopexit
+
+loopentry.1.i.preheader.loopexit:		; preds = %no_exit.0.i38
+	br label %loopentry.1.i.preheader
+
+loopentry.1.i.preheader:		; preds = %loopentry.1.i.preheader.loopexit, %loopentry.0.i31
+	br label %loopentry.1.i
+
+loopentry.1.i:		; preds = %endif.2.i, %loopentry.1.i.preheader
+	br bool undef, label %loopentry.2.i39.preheader, label %loopexit.1.i79.loopexit2
+
+loopentry.2.i39.preheader:		; preds = %loopentry.1.i
+	br label %loopentry.2.i39
+
+loopentry.2.i39:		; preds = %loopexit.5.i77, %loopentry.2.i39.preheader
+	br bool false, label %loopentry.3.i40.preheader, label %hamming.exit.i71
+
+loopentry.3.i40.preheader:		; preds = %loopentry.2.i39
+	br label %loopentry.3.i40
+
+loopentry.3.i40:		; preds = %loopexit.3.i51, %loopentry.3.i40.preheader
+	br bool false, label %no_exit.3.preheader.i42, label %loopexit.3.i51
+
+no_exit.3.preheader.i42:		; preds = %loopentry.3.i40
+	br label %no_exit.3.i49
+
+no_exit.3.i49:		; preds = %no_exit.3.i49, %no_exit.3.preheader.i42
+	br bool undef, label %no_exit.3.i49, label %loopexit.3.i51.loopexit
+
+loopexit.3.i51.loopexit:		; preds = %no_exit.3.i49
+	br label %loopexit.3.i51
+
+loopexit.3.i51:		; preds = %loopexit.3.i51.loopexit, %loopentry.3.i40
+	br bool undef, label %loopentry.3.i40, label %loopentry.4.i52
+
+loopentry.4.i52:		; preds = %loopexit.3.i51
+	br bool false, label %no_exit.4.i54.preheader, label %hamming.exit.i71
+
+no_exit.4.i54.preheader:		; preds = %loopentry.4.i52
+	br label %no_exit.4.i54
+
+no_exit.4.i54:		; preds = %no_exit.4.backedge.i, %no_exit.4.i54.preheader
+	br bool undef, label %then.1.i55, label %endif.1.i56
+
+then.1.i55:		; preds = %no_exit.4.i54
+	br bool undef, label %no_exit.4.backedge.i, label %loopexit.4.i57
+
+no_exit.4.backedge.i:		; preds = %endif.1.i56, %then.1.i55
+	br label %no_exit.4.i54
+
+endif.1.i56:		; preds = %no_exit.4.i54
+	br bool undef, label %no_exit.4.backedge.i, label %loopexit.4.i57
+
+loopexit.4.i57:		; preds = %endif.1.i56, %then.1.i55
+	br bool false, label %no_exit.i.i69.preheader, label %hamming.exit.i71
+
+no_exit.i.i69.preheader:		; preds = %loopexit.4.i57
+	br label %no_exit.i.i69
+
+no_exit.i.i69:		; preds = %no_exit.i.i69, %no_exit.i.i69.preheader
+	br bool undef, label %no_exit.i.i69, label %hamming.exit.i71.loopexit
+
+hamming.exit.i71.loopexit:		; preds = %no_exit.i.i69
+	br label %hamming.exit.i71
+
+hamming.exit.i71:		; preds = %hamming.exit.i71.loopexit, %loopexit.4.i57, %loopentry.4.i52, %loopentry.2.i39
+	br bool undef, label %endif.2.i, label %loopentry.5.i72
+
+loopentry.5.i72:		; preds = %hamming.exit.i71
+	br bool false, label %shortcirc_next.i74.preheader, label %loopexit.5.i77
+
+shortcirc_next.i74.preheader:		; preds = %loopentry.5.i72
+	br label %shortcirc_next.i74
+
+shortcirc_next.i74:		; preds = %no_exit.5.i76, %shortcirc_next.i74.preheader
+	br bool undef, label %no_exit.5.i76, label %loopexit.5.i77.loopexit
+
+no_exit.5.i76:		; preds = %shortcirc_next.i74
+	br bool undef, label %shortcirc_next.i74, label %loopexit.5.i77.loopexit
+
+loopexit.5.i77.loopexit:		; preds = %no_exit.5.i76, %shortcirc_next.i74
+	br label %loopexit.5.i77
+
+loopexit.5.i77:		; preds = %loopexit.5.i77.loopexit, %loopentry.5.i72
+	br bool undef, label %loopentry.2.i39, label %loopexit.1.i79.loopexit
+
+endif.2.i:		; preds = %hamming.exit.i71
+	br label %loopentry.1.i
+
+loopexit.1.i79.loopexit:		; preds = %loopexit.5.i77
+	br label %loopexit.1.i79
+
+loopexit.1.i79.loopexit2:		; preds = %loopentry.1.i
+	br label %loopexit.1.i79
+
+loopexit.1.i79:		; preds = %loopexit.1.i79.loopexit2, %loopexit.1.i79.loopexit
+	br bool undef, label %then.3.i, label %loopentry.6.i80
+
+then.3.i:		; preds = %loopexit.1.i79
+	br bool false, label %no_exit.6.i82.preheader, label %run.exit
+
+loopentry.6.i80:		; preds = %loopexit.1.i79
+	br bool false, label %no_exit.6.i82.preheader, label %run.exit
+
+no_exit.6.i82.preheader:		; preds = %loopentry.6.i80, %then.3.i
+	br label %no_exit.6.i82
+
+no_exit.6.i82:		; preds = %no_exit.6.i82, %no_exit.6.i82.preheader
+	br bool undef, label %no_exit.6.i82, label %run.exit.loopexit
+
+run.exit.loopexit:		; preds = %no_exit.6.i82
+	br label %run.exit
+
+run.exit:		; preds = %run.exit.loopexit, %loopentry.6.i80, %then.3.i
+	br bool false, label %no_exit.1.i36.preheader, label %loopentry.3.i37
+
+else.0.i:		; preds = %no_exit.0.i31
+	br bool false, label %then.0.i4, label %loopentry.0.i6
+
+then.0.i4:		; preds = %else.0.i
+	unreachable
+
+loopentry.0.i6:		; preds = %else.0.i
+	br bool false, label %no_exit.0.i8.preheader, label %loopentry.2.i.preheader
+
+no_exit.0.i8.preheader:		; preds = %loopentry.0.i6
+	br label %no_exit.0.i8
+
+no_exit.0.i8:		; preds = %no_exit.0.i8, %no_exit.0.i8.preheader
+	br bool false, label %no_exit.0.i8, label %loopentry.2.i.preheader.loopexit
+
+loopentry.2.i.preheader.loopexit:		; preds = %no_exit.0.i8
+	br label %loopentry.2.i.preheader
+
+loopentry.2.i.preheader:		; preds = %loopentry.2.i.preheader.loopexit, %loopentry.0.i6
+	br label %loopentry.2.i
+
+loopentry.2.i:		; preds = %endif.3.i19, %loopentry.2.i.preheader
+	br bool false, label %loopentry.3.i10.preheader, label %loopentry.4.i15
+
+loopentry.3.i10.preheader:		; preds = %loopentry.2.i
+	br label %loopentry.3.i10
+
+loopentry.3.i10:		; preds = %loopexit.3.i14, %loopentry.3.i10.preheader
+	br bool false, label %no_exit.3.preheader.i, label %loopexit.3.i14
+
+no_exit.3.preheader.i:		; preds = %loopentry.3.i10
+	br label %no_exit.3.i12
+
+no_exit.3.i12:		; preds = %no_exit.3.i12, %no_exit.3.preheader.i
+	br bool false, label %no_exit.3.i12, label %loopexit.3.i14.loopexit
+
+loopexit.3.i14.loopexit:		; preds = %no_exit.3.i12
+	br label %loopexit.3.i14
+
+loopexit.3.i14:		; preds = %loopexit.3.i14.loopexit, %loopentry.3.i10
+	br bool false, label %loopentry.3.i10, label %loopentry.4.i15.loopexit
+
+loopentry.4.i15.loopexit:		; preds = %loopexit.3.i14
+	br label %loopentry.4.i15
+
+loopentry.4.i15:		; preds = %loopentry.4.i15.loopexit, %loopentry.2.i
+	br bool false, label %loopentry.5.outer.i.preheader, label %loopentry.7.i
+
+loopentry.5.outer.i.preheader:		; preds = %loopentry.4.i15
+	br label %loopentry.5.outer.i
+
+loopentry.5.outer.i:		; preds = %loopexit.5.i, %loopentry.5.outer.i.preheader
+	br label %loopentry.5.i
+
+loopentry.5.i:		; preds = %endif.1.i18, %loopentry.5.outer.i
+	br bool false, label %no_exit.5.i.preheader, label %loopexit.5.i.loopexit3
+
+no_exit.5.i.preheader:		; preds = %loopentry.5.i
+	br label %no_exit.5.i
+
+no_exit.5.i:		; preds = %then.2.i, %no_exit.5.i.preheader
+	br bool false, label %loopentry.6.i, label %endif.1.i18
+
+loopentry.6.i:		; preds = %no_exit.5.i
+	br bool false, label %no_exit.6.preheader.i, label %loopexit.6.i
+
+no_exit.6.preheader.i:		; preds = %loopentry.6.i
+	br label %no_exit.6.i
+
+no_exit.6.i:		; preds = %no_exit.6.i, %no_exit.6.preheader.i
+	br bool false, label %no_exit.6.i, label %loopexit.6.i.loopexit
+
+loopexit.6.i.loopexit:		; preds = %no_exit.6.i
+	br label %loopexit.6.i
+
+loopexit.6.i:		; preds = %loopexit.6.i.loopexit, %loopentry.6.i
+	br bool false, label %then.2.i, label %endif.1.i18
+
+then.2.i:		; preds = %loopexit.6.i
+	br bool false, label %no_exit.5.i, label %loopexit.5.i.loopexit
+
+endif.1.i18:		; preds = %loopexit.6.i, %no_exit.5.i
+	br label %loopentry.5.i
+
+loopexit.5.i.loopexit:		; preds = %then.2.i
+	br label %loopexit.5.i
+
+loopexit.5.i.loopexit3:		; preds = %loopentry.5.i
+	br label %loopexit.5.i
+
+loopexit.5.i:		; preds = %loopexit.5.i.loopexit3, %loopexit.5.i.loopexit
+	br bool false, label %loopentry.5.outer.i, label %loopentry.7.i.loopexit
+
+loopentry.7.i.loopexit:		; preds = %loopexit.5.i
+	br label %loopentry.7.i
+
+loopentry.7.i:		; preds = %loopentry.7.i.loopexit, %loopentry.4.i15
+	br bool false, label %no_exit.7.i.preheader, label %hamming.exit.i
+
+no_exit.7.i.preheader:		; preds = %loopentry.7.i
+	br label %no_exit.7.i
+
+no_exit.7.i:		; preds = %no_exit.7.i, %no_exit.7.i.preheader
+	br bool false, label %no_exit.7.i, label %loopexit.7.i
+
+loopexit.7.i:		; preds = %no_exit.7.i
+	br bool false, label %no_exit.i.i.preheader, label %hamming.exit.i
+
+no_exit.i.i.preheader:		; preds = %loopexit.7.i
+	br label %no_exit.i.i
+
+no_exit.i.i:		; preds = %no_exit.i.i, %no_exit.i.i.preheader
+	br bool false, label %no_exit.i.i, label %hamming.exit.i.loopexit
+
+hamming.exit.i.loopexit:		; preds = %no_exit.i.i
+	br label %hamming.exit.i
+
+hamming.exit.i:		; preds = %hamming.exit.i.loopexit, %loopexit.7.i, %loopentry.7.i
+	br bool false, label %endif.3.i19, label %loopentry.8.i
+
+loopentry.8.i:		; preds = %hamming.exit.i
+	br bool false, label %shortcirc_next.i.preheader, label %loopexit.8.i
+
+shortcirc_next.i.preheader:		; preds = %loopentry.8.i
+	br label %shortcirc_next.i
+
+shortcirc_next.i:		; preds = %no_exit.8.i, %shortcirc_next.i.preheader
+	br bool false, label %no_exit.8.i, label %loopexit.8.i.loopexit
+
+no_exit.8.i:		; preds = %shortcirc_next.i
+	br bool false, label %shortcirc_next.i, label %loopexit.8.i.loopexit
+
+loopexit.8.i.loopexit:		; preds = %no_exit.8.i, %shortcirc_next.i
+	br label %loopexit.8.i
+
+loopexit.8.i:		; preds = %loopexit.8.i.loopexit, %loopentry.8.i
+	br bool false, label %no_exit.9.i.preheader, label %endif.3.i19
+
+no_exit.9.i.preheader:		; preds = %loopexit.8.i
+	br label %no_exit.9.i
+
+no_exit.9.i:		; preds = %no_exit.9.i, %no_exit.9.i.preheader
+	br bool false, label %no_exit.9.i, label %endif.3.i19.loopexit
+
+endif.3.i19.loopexit:		; preds = %no_exit.9.i
+	br label %endif.3.i19
+
+endif.3.i19:		; preds = %endif.3.i19.loopexit, %loopexit.8.i, %hamming.exit.i
+	br bool false, label %loopentry.2.i, label %loopexit.1.i20
+
+loopexit.1.i20:		; preds = %endif.3.i19
+	br bool false, label %then.4.i, label %UnifiedReturnBlock.i
+
+then.4.i:		; preds = %loopexit.1.i20
+	br label %runcont.exit
+
+UnifiedReturnBlock.i:		; preds = %loopexit.1.i20
+	br label %runcont.exit
+
+runcont.exit:		; preds = %UnifiedReturnBlock.i, %then.4.i
+	br bool false, label %no_exit.1.i36.preheader, label %loopentry.3.i37
+
+no_exit.1.i36.preheader:		; preds = %runcont.exit, %run.exit
+	br label %no_exit.1.i36
+
+no_exit.1.i36:		; preds = %no_exit.1.i36, %no_exit.1.i36.preheader
+	br bool false, label %no_exit.1.i36, label %loopentry.3.i37.loopexit
+
+loopentry.3.i37.loopexit:		; preds = %no_exit.1.i36
+	br label %loopentry.3.i37
+
+loopentry.3.i37:		; preds = %loopentry.3.i37.loopexit, %runcont.exit, %run.exit
+	br bool false, label %loopentry.4.i38.preheader, label %loopexit.3.i
+
+loopentry.4.i38.preheader:		; preds = %loopentry.3.i37
+	br label %loopentry.4.i38
+
+loopentry.4.i38:		; preds = %loopexit.4.i42, %loopentry.4.i38.preheader
+	br bool false, label %no_exit.3.i.preheader, label %loopexit.4.i42
+
+no_exit.3.i.preheader:		; preds = %loopentry.4.i38
+	br label %no_exit.3.i
+
+no_exit.3.i:		; preds = %no_exit.3.i.backedge, %no_exit.3.i.preheader
+	br bool false, label %endif.3.i, label %else.1.i
+
+else.1.i:		; preds = %no_exit.3.i
+	br bool false, label %no_exit.3.i.backedge, label %loopexit.4.i42.loopexit
+
+no_exit.3.i.backedge:		; preds = %endif.3.i, %else.1.i
+	br label %no_exit.3.i
+
+endif.3.i:		; preds = %no_exit.3.i
+	br bool false, label %no_exit.3.i.backedge, label %loopexit.4.i42.loopexit
+
+loopexit.4.i42.loopexit:		; preds = %endif.3.i, %else.1.i
+	br label %loopexit.4.i42
+
+loopexit.4.i42:		; preds = %loopexit.4.i42.loopexit, %loopentry.4.i38
+	br bool false, label %loopentry.4.i38, label %loopexit.3.i.loopexit
+
+loopexit.3.i.loopexit:		; preds = %loopexit.4.i42
+	br label %loopexit.3.i
+
+loopexit.3.i:		; preds = %loopexit.3.i.loopexit, %loopentry.3.i37
+	%tmp.13.i155 = setlt int 0, 0		; <bool> [#uses=1]
+	br bool %tmp.13.i155, label %no_exit.0.i31, label %loopentry.1.i30.loopexit
+}