diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyLowerEmscriptenEHSjLj.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyLowerEmscriptenEHSjLj.cpp --- a/llvm/lib/Target/WebAssembly/WebAssemblyLowerEmscriptenEHSjLj.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyLowerEmscriptenEHSjLj.cpp @@ -891,6 +891,7 @@ IRB.CreateUnreachable(); IRB.SetInsertPoint(Tail); + BB.replaceSuccessorsPhiUsesWith(&BB, Tail); } // Insert a branch based on __THREW__ variable diff --git a/llvm/test/CodeGen/WebAssembly/lower-em-ehsjlj.ll b/llvm/test/CodeGen/WebAssembly/lower-em-ehsjlj.ll --- a/llvm/test/CodeGen/WebAssembly/lower-em-ehsjlj.ll +++ b/llvm/test/CodeGen/WebAssembly/lower-em-ehsjlj.ll @@ -65,6 +65,10 @@ ; CHECK-NEXT: %or = or i1 %cmp.eq.zero, %cmp.eq.one ; CHECK-NEXT: br i1 %or, label %tail, label %longjmp.rethrow +; CHECK: try.cont: +; CHECK-NEXT: %phi = phi i32 [ undef, %tail ], [ undef, %lpad ] +; CHECK-NEXT: ret void + ; CHECK: tail: ; CHECK-NEXT: %cmp = icmp eq i32 %__THREW__.val, 1 ; CHECK-NEXT: br i1 %cmp, label %lpad, label %try.cont @@ -84,6 +88,7 @@ br label %try.cont try.cont: ; preds = %entry, %lpad + %phi = phi i32 [ undef, %entry ], [ undef, %lpad ] ret void }