1; RUN: opt -passes=reg2mem -disable-output -enable-new-pm=1 < %s 2; RUN: opt -reg2mem -disable-output < %s 3; PR14782 4 5declare void @f1() 6 7declare i32 @__gxx_personality_sj0(...) 8 9declare void @f2() 10 11declare void @f3() 12 13declare void @f4_() 14 15declare void @_Z12xxxdtsP10xxxpq() 16 17define hidden void @_ZN12xxxyzIi9xxxwLi29ELi0EE4f3NewES0_i() ssp align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_sj0 to i8*) { 18bb: 19 invoke void @f4_() 20 to label %bb1 unwind label %.thread 21 22.thread: ; preds = %bb 23 %tmp = landingpad { i8*, i32 } 24 cleanup 25 br label %bb13 26 27bb1: ; preds = %bb 28 invoke void @f1() 29 to label %.noexc unwind label %bb10 30 31.noexc: ; preds = %bb1 32 invoke void @f4_() 33 to label %bb6 unwind label %bb2 34 35bb2: ; preds = %.noexc 36 %tmp3 = landingpad { i8*, i32 } 37 cleanup 38 invoke void @f3() 39 to label %.body unwind label %bb4 40 41bb4: ; preds = %bb2 42 %tmp5 = landingpad { i8*, i32 } 43 catch i8* null 44 unreachable 45 46bb6: ; preds = %.noexc 47 invoke void @_Z12xxxdtsP10xxxpq() 48 to label %_ZN6xxxdIN12xxxyzIi9xxxwLi29ELi0EE4fr1jS3_.exit unwind label %bb10 49 50_ZN6xxxdIN12xxxyzIi9xxxwLi29ELi0EE4fr1jS3_.exit: ; preds = %bb6 51 invoke void @f2() 52 to label %bb7 unwind label %bb8 53 54bb7: ; preds = %_ZN6xxxdIN12xxxyzIi9xxxwLi29ELi0EE4fr1jS3_.exit 55 ret void 56 57bb8: ; preds = %_ZN6xxxdIN12xxxyzIi9xxxwLi29ELi0EE4fr1jS3_.exit 58 %tmp9 = landingpad { i8*, i32 } 59 cleanup 60 br label %_ZN10xxxpqdlev.exit 61 62bb10: ; preds = %bb6, %bb1 63 %.1 = phi i1 [ true, %bb1 ], [ false, %bb6 ] 64 %tmp11 = landingpad { i8*, i32 } 65 cleanup 66 br label %.body 67 68.body: ; preds = %bb10, %bb2 69 %.1.lpad-body = phi i1 [ %.1, %bb10 ], [ true, %bb2 ] 70 invoke void @f2() 71 to label %bb12 unwind label %bb14 72 73bb12: ; preds = %.body 74 br i1 %.1.lpad-body, label %bb13, label %_ZN10xxxpqdlev.exit 75 76bb13: ; preds = %bb12, %.thread 77 invoke void @xxx_MemFree() 78 to label %_ZN10xxxpqdlev.exit unwind label %bb14 79 80_ZN10xxxpqdlev.exit: ; preds = %bb13, %bb12, %bb8 81 resume { i8*, i32 } undef 82 83bb14: ; preds = %bb13, %.body 84 %tmp15 = landingpad { i8*, i32 } 85 catch i8* null 86 unreachable 87} 88 89declare void @xxx_MemFree() 90