-
Notifications
You must be signed in to change notification settings - Fork 746
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Optimization passes removing block results required by catch clauses #6724
Comments
I think there are TODOs for optimizing
In a build without assertions I guess it might be less clear, sorry about that @frank-emrich |
Yes, the new EH instructions are currently only supported for being emitted at the end of the pipeline via |
Ah, no problem! I just started working on making the optimizer work on typed continuations instructions ( Just for reference, I've now identified what was causing the particular problem I was seeing, both for That being said, I think it's sensible to just close this issue. I will update |
I'm seeing a couple of cases where optimization passes invalidate modules using EH instructions by removing seemingly unnecessary block results.
Consider the following module:
Running, say, the
vacuum
pass on this removes thei32
result ofhandler
, which then invalidates the module:I haven't dug deeply into the root cause, but I'm seeing validation errors when running any of the following passes invidiually on the module above:
I'm not sure what the status of the Binaryen implementation of the updated EH proposal (using
try_table
) is, so please let me know if this is just me using things that aren't supposed to be working, yet.I'm interested in these problems regarding EH code because they also break typed continuations code in a completely analogous way: A
resume
instruction'stag
clauses require the result types of the handler blocks it mentions to remain unchanged. I'm thus hoping that I will be able to re-use the fixes for the EH issue described here.The text was updated successfully, but these errors were encountered: