[EH] Fix missing outer block for catchless try #6519
Merged
Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments. Suggestions cannot be applied while the pull request is queued to merge. Suggestion cannot be applied right now. Please check back later.
When translating a
try
expression, we may need an 'outer' block that wraps the newly generatedtry_table
so we can jump out of the expression when an exception does not occur. (The condition we use is when thetry
has any catches or if thetry
is a target of any innertry-delegate
s:binaryen/src/passes/TranslateEH.cpp
Line 677 in 219e668
In case the
try
has either ofcatch
ordelegate
, when we have the 'outer' block, we add the newly createdtry_table
in the 'outer' block and replace the whole expression with the block:binaryen/src/passes/TranslateEH.cpp
Line 670 in 219e668
binaryen/src/passes/TranslateEH.cpp
Lines 332 to 340 in 219e668
But in case of a catchless
try
, we forgot to do that:binaryen/src/passes/TranslateEH.cpp
Line 388 in 219e668
So this PR fixes it.