; RUN: opt < %s -codegenprepare | llvm-dis ; PR3113 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128" target triple = "x86_64-unknown-linux-gnu" define fastcc i32 @ascii2flt(i8* %str) nounwind { entry: br label %bb2.i bb2.i: ; preds = %bb4.i.bb2.i_crit_edge, %entry br i1 false, label %bb4.i, label %base2flt.exit bb4.i: ; preds = %bb2.i br i1 false, label %bb11.i, label %bb4.i.bb2.i_crit_edge bb4.i.bb2.i_crit_edge: ; preds = %bb4.i br label %bb2.i bb11.i: ; preds = %bb4.i br label %bb11.i.base2flt.exit204_crit_edge bb11.i.base2flt.exit204_crit_edge: ; preds = %bb11.i br label %base2flt.exit204 bb11.i.bb7.i197_crit_edge: ; No predecessors! br label %bb7.i197 base2flt.exit: ; preds = %bb2.i br label %base2flt.exit.base2flt.exit204_crit_edge base2flt.exit.base2flt.exit204_crit_edge: ; preds = %base2flt.exit br label %base2flt.exit204 base2flt.exit.bb7.i197_crit_edge: ; No predecessors! br label %bb7.i197 bb10.i196: ; preds = %bb7.i197 br label %bb10.i196.base2flt.exit204_crit_edge bb10.i196.base2flt.exit204_crit_edge: ; preds = %bb7.i197, %bb10.i196 br label %base2flt.exit204 bb10.i196.bb7.i197_crit_edge: ; No predecessors! br label %bb7.i197 bb7.i197: ; preds = %bb10.i196.bb7.i197_crit_edge, %base2flt.exit.bb7.i197_crit_edge, %bb11.i.bb7.i197_crit_edge %.reg2mem.0 = phi i32 [ 0, %base2flt.exit.bb7.i197_crit_edge ], [ %.reg2mem.0, %bb10.i196.bb7.i197_crit_edge ], [ 0, %bb11.i.bb7.i197_crit_edge ] ; <i32> [#uses=1] br i1 undef, label %bb10.i196.base2flt.exit204_crit_edge, label %bb10.i196 base2flt.exit204: ; preds = %bb10.i196.base2flt.exit204_crit_edge, %base2flt.exit.base2flt.exit204_crit_edge, %bb11.i.base2flt.exit204_crit_edge br i1 false, label %base2flt.exit204.bb8_crit_edge, label %bb base2flt.exit204.bb8_crit_edge: ; preds = %base2flt.exit204 br label %bb8 bb: ; preds = %base2flt.exit204 br i1 false, label %bb.bb18_crit_edge, label %bb1.i bb.bb18_crit_edge: ; preds = %bb9, %bb br label %bb18 bb1.i: ; preds = %bb br i1 false, label %bb1.i.bb7_crit_edge, label %bb1.i158 bb1.i.bb7_crit_edge.loopexit: ; preds = %bb2.i164 br label %bb1.i.bb7_crit_edge bb1.i.bb7_crit_edge: ; preds = %bb1.i.bb7_crit_edge.loopexit, %bb1.i br label %bb7.preheader bb1.i158: ; preds = %bb1.i br i1 false, label %bb1.i158.bb10.i179_crit_edge, label %bb1.i158.bb2.i164_crit_edge bb1.i158.bb2.i164_crit_edge: ; preds = %bb1.i158 br label %bb2.i164 bb1.i158.bb10.i179_crit_edge: ; preds = %bb1.i158 br label %bb10.i179 bb2.i164: ; preds = %bb4.i166.bb2.i164_crit_edge, %bb1.i158.bb2.i164_crit_edge br i1 false, label %bb4.i166, label %bb1.i.bb7_crit_edge.loopexit bb4.i166: ; preds = %bb2.i164 br i1 false, label %bb4.i166.bb11.i172_crit_edge, label %bb4.i166.bb2.i164_crit_edge bb4.i166.bb2.i164_crit_edge: ; preds = %bb4.i166 br label %bb2.i164 bb4.i166.bb11.i172_crit_edge: ; preds = %bb4.i166 br label %bb11.i172 bb11.i172: ; preds = %bb10.i179.bb11.i172_crit_edge, %bb4.i166.bb11.i172_crit_edge br label %bb7.preheader bb10.i179: ; preds = %bb9.i182, %bb1.i158.bb10.i179_crit_edge br i1 false, label %bb7.i180, label %bb10.i179.bb11.i172_crit_edge bb10.i179.bb11.i172_crit_edge: ; preds = %bb10.i179 br label %bb11.i172 bb7.i180: ; preds = %bb10.i179 br i1 false, label %bb7.i180.bb7_crit_edge, label %bb9.i182 bb7.i180.bb7_crit_edge: ; preds = %bb7.i180 br label %bb7.preheader bb7.preheader: ; preds = %bb7.i180.bb7_crit_edge, %bb11.i172, %bb1.i.bb7_crit_edge br label %bb7 bb9.i182: ; preds = %bb7.i180 br label %bb10.i179 bb7: ; preds = %addflt.exit114, %bb7.preheader switch i8 0, label %bb4 [ i8 0, label %bb7.bb8_crit_edge i8 46, label %bb7.bb8_crit_edge ] bb7.bb8_crit_edge: ; preds = %bb7, %bb7 br label %bb8 bb4: ; preds = %bb7 br i1 false, label %bb18.loopexit1, label %bb1.i5 bb1.i5: ; preds = %bb4 br i1 false, label %bb1.i5.mulflt.exit157_crit_edge, label %bb3.i147 bb1.i5.mulflt.exit157_crit_edge: ; preds = %bb5.i148, %bb1.i5 br label %mulflt.exit157 bb3.i147: ; preds = %bb1.i5 br i1 false, label %bb3.i147.mulflt.exit157_crit_edge, label %bb5.i148 bb3.i147.mulflt.exit157_crit_edge: ; preds = %bb8.i150, %bb3.i147 br label %mulflt.exit157 bb5.i148: ; preds = %bb3.i147 br i1 false, label %bb1.i5.mulflt.exit157_crit_edge, label %bb7.i149 bb7.i149: ; preds = %bb5.i148 br i1 false, label %bb8.i150, label %bb7.i149.bb12.i154_crit_edge bb7.i149.bb12.i154_crit_edge: ; preds = %bb7.i149 br label %bb12.i154 bb8.i150: ; preds = %bb7.i149 br i1 false, label %bb3.i147.mulflt.exit157_crit_edge, label %bb10.i151 bb10.i151: ; preds = %bb8.i150 br label %bb12.i154 bb12.i154: ; preds = %bb10.i151, %bb7.i149.bb12.i154_crit_edge br label %mulflt.exit157 mulflt.exit157: ; preds = %bb12.i154, %bb3.i147.mulflt.exit157_crit_edge, %bb1.i5.mulflt.exit157_crit_edge br i1 false, label %mulflt.exit157.base2flt.exit144_crit_edge, label %bb1.i115 mulflt.exit157.base2flt.exit144_crit_edge.loopexit: ; preds = %bb2.i121 br label %mulflt.exit157.base2flt.exit144_crit_edge mulflt.exit157.base2flt.exit144_crit_edge: ; preds = %mulflt.exit157.base2flt.exit144_crit_edge.loopexit, %mulflt.exit157 br label %base2flt.exit144 bb1.i115: ; preds = %mulflt.exit157 br i1 false, label %bb1.i115.bb10.i136_crit_edge, label %bb1.i115.bb2.i121_crit_edge bb1.i115.bb2.i121_crit_edge: ; preds = %bb1.i115 br label %bb2.i121 bb1.i115.bb10.i136_crit_edge: ; preds = %bb1.i115 br label %bb10.i136 bb2.i121: ; preds = %bb4.i123.bb2.i121_crit_edge, %bb1.i115.bb2.i121_crit_edge br i1 false, label %bb4.i123, label %mulflt.exit157.base2flt.exit144_crit_edge.loopexit bb4.i123: ; preds = %bb2.i121 br i1 false, label %bb4.i123.bb11.i129_crit_edge, label %bb4.i123.bb2.i121_crit_edge bb4.i123.bb2.i121_crit_edge: ; preds = %bb4.i123 br label %bb2.i121 bb4.i123.bb11.i129_crit_edge: ; preds = %bb4.i123 br label %bb11.i129 bb11.i129: ; preds = %bb10.i136.bb11.i129_crit_edge, %bb4.i123.bb11.i129_crit_edge br label %base2flt.exit144 bb10.i136: ; preds = %bb9.i139, %bb1.i115.bb10.i136_crit_edge br i1 false, label %bb7.i137, label %bb10.i136.bb11.i129_crit_edge bb10.i136.bb11.i129_crit_edge: ; preds = %bb10.i136 br label %bb11.i129 bb7.i137: ; preds = %bb10.i136 br i1 false, label %bb7.i137.base2flt.exit144_crit_edge, label %bb9.i139 bb7.i137.base2flt.exit144_crit_edge: ; preds = %bb7.i137 br label %base2flt.exit144 bb9.i139: ; preds = %bb7.i137 br label %bb10.i136 base2flt.exit144: ; preds = %bb7.i137.base2flt.exit144_crit_edge, %bb11.i129, %mulflt.exit157.base2flt.exit144_crit_edge br i1 false, label %base2flt.exit144.addflt.exit114_crit_edge, label %bb3.i105 base2flt.exit144.addflt.exit114_crit_edge: ; preds = %bb3.i105, %base2flt.exit144 br label %addflt.exit114 bb3.i105: ; preds = %base2flt.exit144 br i1 false, label %base2flt.exit144.addflt.exit114_crit_edge, label %bb5.i106 bb5.i106: ; preds = %bb3.i105 br i1 false, label %bb5.i106.bb9.i111_crit_edge, label %bb6.i107 bb5.i106.bb9.i111_crit_edge: ; preds = %bb5.i106 br label %bb9.i111 bb6.i107: ; preds = %bb5.i106 br i1 false, label %bb6.i107.addflt.exit114_crit_edge, label %bb8.i108 bb6.i107.addflt.exit114_crit_edge: ; preds = %bb6.i107 br label %addflt.exit114 bb8.i108: ; preds = %bb6.i107 br label %bb9.i111 bb9.i111: ; preds = %bb8.i108, %bb5.i106.bb9.i111_crit_edge br label %addflt.exit114 addflt.exit114: ; preds = %bb9.i111, %bb6.i107.addflt.exit114_crit_edge, %base2flt.exit144.addflt.exit114_crit_edge br label %bb7 bb18.loopexit1: ; preds = %bb4 ret i32 -1 bb18: ; preds = %bb8.bb18_crit_edge, %bb.bb18_crit_edge ret i32 0 bb8: ; preds = %bb7.bb8_crit_edge, %base2flt.exit204.bb8_crit_edge br i1 false, label %bb9, label %bb8.bb18_crit_edge bb8.bb18_crit_edge: ; preds = %bb8 br label %bb18 bb9: ; preds = %bb8 br i1 false, label %bb.bb18_crit_edge, label %bb1.i13 bb1.i13: ; preds = %bb9 br i1 false, label %bb1.i13.base2flt.exit102_crit_edge, label %bb1.i73 bb1.i13.base2flt.exit102_crit_edge.loopexit: ; preds = %bb2.i79 br label %bb1.i13.base2flt.exit102_crit_edge bb1.i13.base2flt.exit102_crit_edge: ; preds = %bb1.i13.base2flt.exit102_crit_edge.loopexit, %bb1.i13 br label %base2flt.exit102 bb1.i73: ; preds = %bb1.i13 br i1 false, label %bb1.i73.bb10.i94_crit_edge, label %bb1.i73.bb2.i79_crit_edge bb1.i73.bb2.i79_crit_edge: ; preds = %bb1.i73 br label %bb2.i79 bb1.i73.bb10.i94_crit_edge: ; preds = %bb1.i73 br label %bb10.i94 bb2.i79: ; preds = %bb4.i81.bb2.i79_crit_edge, %bb1.i73.bb2.i79_crit_edge br i1 false, label %bb4.i81, label %bb1.i13.base2flt.exit102_crit_edge.loopexit bb4.i81: ; preds = %bb2.i79 br i1 false, label %bb4.i81.bb11.i87_crit_edge, label %bb4.i81.bb2.i79_crit_edge bb4.i81.bb2.i79_crit_edge: ; preds = %bb4.i81 br label %bb2.i79 bb4.i81.bb11.i87_crit_edge: ; preds = %bb4.i81 br label %bb11.i87 bb11.i87: ; preds = %bb10.i94.bb11.i87_crit_edge, %bb4.i81.bb11.i87_crit_edge br label %base2flt.exit102 bb10.i94: ; preds = %bb9.i97, %bb1.i73.bb10.i94_crit_edge br i1 false, label %bb7.i95, label %bb10.i94.bb11.i87_crit_edge bb10.i94.bb11.i87_crit_edge: ; preds = %bb10.i94 br label %bb11.i87 bb7.i95: ; preds = %bb10.i94 br i1 false, label %bb7.i95.base2flt.exit102_crit_edge, label %bb9.i97 bb7.i95.base2flt.exit102_crit_edge: ; preds = %bb7.i95 br label %base2flt.exit102 bb9.i97: ; preds = %bb7.i95 br label %bb10.i94 base2flt.exit102: ; preds = %bb7.i95.base2flt.exit102_crit_edge, %bb11.i87, %bb1.i13.base2flt.exit102_crit_edge br i1 false, label %base2flt.exit102.mulflt.exit72_crit_edge, label %bb3.i62 base2flt.exit102.mulflt.exit72_crit_edge: ; preds = %bb5.i63, %base2flt.exit102 br label %mulflt.exit72 bb3.i62: ; preds = %base2flt.exit102 br i1 false, label %bb3.i62.mulflt.exit72_crit_edge, label %bb5.i63 bb3.i62.mulflt.exit72_crit_edge: ; preds = %bb8.i65, %bb3.i62 br label %mulflt.exit72 bb5.i63: ; preds = %bb3.i62 br i1 false, label %base2flt.exit102.mulflt.exit72_crit_edge, label %bb7.i64 bb7.i64: ; preds = %bb5.i63 br i1 false, label %bb8.i65, label %bb7.i64.bb12.i69_crit_edge bb7.i64.bb12.i69_crit_edge: ; preds = %bb7.i64 br label %bb12.i69 bb8.i65: ; preds = %bb7.i64 br i1 false, label %bb3.i62.mulflt.exit72_crit_edge, label %bb10.i66 bb10.i66: ; preds = %bb8.i65 br label %bb12.i69 bb12.i69: ; preds = %bb10.i66, %bb7.i64.bb12.i69_crit_edge br label %mulflt.exit72 mulflt.exit72: ; preds = %bb12.i69, %bb3.i62.mulflt.exit72_crit_edge, %base2flt.exit102.mulflt.exit72_crit_edge br i1 false, label %mulflt.exit72.bb10.i58_crit_edge, label %bb3.i50 mulflt.exit72.bb10.i58_crit_edge: ; preds = %bb3.i50, %mulflt.exit72 br label %bb10.i58 bb3.i50: ; preds = %mulflt.exit72 br i1 false, label %mulflt.exit72.bb10.i58_crit_edge, label %bb5.i51 bb5.i51: ; preds = %bb3.i50 br i1 false, label %bb5.i51.bb9.i56_crit_edge, label %bb6.i52 bb5.i51.bb9.i56_crit_edge: ; preds = %bb5.i51 br label %bb9.i56 bb6.i52: ; preds = %bb5.i51 br i1 false, label %bb6.i52.bb10.i58_crit_edge, label %bb8.i53 bb6.i52.bb10.i58_crit_edge: ; preds = %bb6.i52 br label %bb10.i58 bb8.i53: ; preds = %bb6.i52 br label %bb9.i56 bb9.i56: ; preds = %bb8.i53, %bb5.i51.bb9.i56_crit_edge br label %bb15.preheader bb10.i58: ; preds = %bb6.i52.bb10.i58_crit_edge, %mulflt.exit72.bb10.i58_crit_edge br label %bb15.preheader bb15.preheader: ; preds = %bb10.i58, %bb9.i56 br label %bb15 bb15: ; preds = %addflt.exit, %bb15.preheader br i1 false, label %bb15.bb18.loopexit_crit_edge, label %bb12 bb15.bb18.loopexit_crit_edge: ; preds = %bb15 br label %bb18.loopexit bb12: ; preds = %bb15 br i1 false, label %bb12.bb18.loopexit_crit_edge, label %bb1.i21 bb12.bb18.loopexit_crit_edge: ; preds = %bb12 br label %bb18.loopexit bb1.i21: ; preds = %bb12 br i1 false, label %bb1.i21.mulflt.exit47_crit_edge, label %bb3.i37 bb1.i21.mulflt.exit47_crit_edge: ; preds = %bb5.i38, %bb1.i21 br label %mulflt.exit47 bb3.i37: ; preds = %bb1.i21 br i1 false, label %bb3.i37.mulflt.exit47_crit_edge, label %bb5.i38 bb3.i37.mulflt.exit47_crit_edge: ; preds = %bb8.i40, %bb3.i37 br label %mulflt.exit47 bb5.i38: ; preds = %bb3.i37 br i1 false, label %bb1.i21.mulflt.exit47_crit_edge, label %bb7.i39 bb7.i39: ; preds = %bb5.i38 br i1 false, label %bb8.i40, label %bb7.i39.bb12.i44_crit_edge bb7.i39.bb12.i44_crit_edge: ; preds = %bb7.i39 br label %bb12.i44 bb8.i40: ; preds = %bb7.i39 br i1 false, label %bb3.i37.mulflt.exit47_crit_edge, label %bb10.i41 bb10.i41: ; preds = %bb8.i40 br label %bb12.i44 bb12.i44: ; preds = %bb10.i41, %bb7.i39.bb12.i44_crit_edge br label %mulflt.exit47 mulflt.exit47: ; preds = %bb12.i44, %bb3.i37.mulflt.exit47_crit_edge, %bb1.i21.mulflt.exit47_crit_edge br i1 false, label %mulflt.exit47.base2flt.exit34_crit_edge, label %bb1.i15 mulflt.exit47.base2flt.exit34_crit_edge.loopexit: ; preds = %bb2.i20 br label %mulflt.exit47.base2flt.exit34_crit_edge mulflt.exit47.base2flt.exit34_crit_edge: ; preds = %mulflt.exit47.base2flt.exit34_crit_edge.loopexit, %mulflt.exit47 br label %base2flt.exit34 bb1.i15: ; preds = %mulflt.exit47 br i1 false, label %bb1.i15.bb10.i31_crit_edge, label %bb1.i15.bb2.i20_crit_edge bb1.i15.bb2.i20_crit_edge: ; preds = %bb1.i15 br label %bb2.i20 bb1.i15.bb10.i31_crit_edge: ; preds = %bb1.i15 br label %bb10.i31 bb2.i20: ; preds = %bb4.i22.bb2.i20_crit_edge, %bb1.i15.bb2.i20_crit_edge br i1 false, label %bb4.i22, label %mulflt.exit47.base2flt.exit34_crit_edge.loopexit bb4.i22: ; preds = %bb2.i20 br i1 false, label %bb4.i22.bb11.i28_crit_edge, label %bb4.i22.bb2.i20_crit_edge bb4.i22.bb2.i20_crit_edge: ; preds = %bb4.i22 br label %bb2.i20 bb4.i22.bb11.i28_crit_edge: ; preds = %bb4.i22 br label %bb11.i28 bb11.i28: ; preds = %bb10.i31.bb11.i28_crit_edge, %bb4.i22.bb11.i28_crit_edge br label %base2flt.exit34 bb10.i31: ; preds = %bb9.i33, %bb1.i15.bb10.i31_crit_edge br i1 false, label %bb7.i32, label %bb10.i31.bb11.i28_crit_edge bb10.i31.bb11.i28_crit_edge: ; preds = %bb10.i31 br label %bb11.i28 bb7.i32: ; preds = %bb10.i31 br i1 false, label %bb7.i32.base2flt.exit34_crit_edge, label %bb9.i33 bb7.i32.base2flt.exit34_crit_edge: ; preds = %bb7.i32 br label %base2flt.exit34 bb9.i33: ; preds = %bb7.i32 br label %bb10.i31 base2flt.exit34: ; preds = %bb7.i32.base2flt.exit34_crit_edge, %bb11.i28, %mulflt.exit47.base2flt.exit34_crit_edge br i1 false, label %base2flt.exit34.mulflt.exit_crit_edge, label %bb3.i9 base2flt.exit34.mulflt.exit_crit_edge: ; preds = %bb5.i10, %base2flt.exit34 br label %mulflt.exit bb3.i9: ; preds = %base2flt.exit34 br i1 false, label %bb3.i9.mulflt.exit_crit_edge, label %bb5.i10 bb3.i9.mulflt.exit_crit_edge: ; preds = %bb8.i11, %bb3.i9 br label %mulflt.exit bb5.i10: ; preds = %bb3.i9 br i1 false, label %base2flt.exit34.mulflt.exit_crit_edge, label %bb7.i bb7.i: ; preds = %bb5.i10 br i1 false, label %bb8.i11, label %bb7.i.bb12.i_crit_edge bb7.i.bb12.i_crit_edge: ; preds = %bb7.i br label %bb12.i bb8.i11: ; preds = %bb7.i br i1 false, label %bb3.i9.mulflt.exit_crit_edge, label %bb10.i12 bb10.i12: ; preds = %bb8.i11 br label %bb12.i bb12.i: ; preds = %bb10.i12, %bb7.i.bb12.i_crit_edge br label %mulflt.exit mulflt.exit: ; preds = %bb12.i, %bb3.i9.mulflt.exit_crit_edge, %base2flt.exit34.mulflt.exit_crit_edge br i1 false, label %mulflt.exit.addflt.exit_crit_edge, label %bb3.i mulflt.exit.addflt.exit_crit_edge: ; preds = %bb3.i, %mulflt.exit br label %addflt.exit bb3.i: ; preds = %mulflt.exit br i1 false, label %mulflt.exit.addflt.exit_crit_edge, label %bb5.i bb5.i: ; preds = %bb3.i br i1 false, label %bb5.i.bb9.i_crit_edge, label %bb6.i bb5.i.bb9.i_crit_edge: ; preds = %bb5.i br label %bb9.i bb6.i: ; preds = %bb5.i br i1 false, label %bb6.i.addflt.exit_crit_edge, label %bb8.i bb6.i.addflt.exit_crit_edge: ; preds = %bb6.i br label %addflt.exit bb8.i: ; preds = %bb6.i br label %bb9.i bb9.i: ; preds = %bb8.i, %bb5.i.bb9.i_crit_edge br label %addflt.exit addflt.exit: ; preds = %bb9.i, %bb6.i.addflt.exit_crit_edge, %mulflt.exit.addflt.exit_crit_edge br label %bb15 bb18.loopexit: ; preds = %bb12.bb18.loopexit_crit_edge, %bb15.bb18.loopexit_crit_edge ret i32 0 }