Index: lib/Target/WebAssembly/WebAssemblyInstrControl.td =================================================================== --- lib/Target/WebAssembly/WebAssemblyInstrControl.td +++ lib/Target/WebAssembly/WebAssemblyInstrControl.td @@ -130,8 +130,11 @@ def THROW_I64 : I<(outs), (ins i32imm:$tag, I64:$val), [(int_wasm_throw imm:$tag, I64:$val)], "throw \t$tag, $val", 0x08>; -def RETHROW : I<(outs), (ins i32imm:$rel_depth), [], "rethrow \t$rel_depth", - 0x09>; +def RETHROW : I<(outs), (ins bb_op:$dst), [], "rethrow \t$dst", 0x09>; +let isCodeGenOnly = 1 in +// This is used when the destination for rethrow is the caller function. This +// will be converted to a rethrow in CFGStackify. +def RETHROW_TO_CALLER : I<(outs), (ins), [], "rethrow">; } // isTerminator = 1, hasCtrlDep = 1, isBarrier = 1 // Region within which an exception is caught: try / end_try