Skip to content

Commit 4204845

Browse files
committed
Better handling of unreachable code in trans
The builder functions in trans_build now look at an 'unreachable' flag in the block context and don't generate code (returning undefined placeholder values) when this flag is set. Threading the unreachable flag through context still requires some care, but this seems a more sane approach than re-checking for terminated blocks throughout the compiler. When creating a block, if you use its closest dominator as parent, the flag will be automatically passed through. If you can't do that, because the dominator is a scope block that you're trying to get out of, you'll have to do something like this to explicitly pass on the flag: if bcx.unreachable { Unreachable(next_cx); } Closes #949. Closes #946. Closes #942. Closes #895. Closes #894. Closes #892. Closes #957. Closes #958.
1 parent b029789 commit 4204845

File tree

6 files changed

+341
-256
lines changed

6 files changed

+341
-256
lines changed

0 commit comments

Comments
 (0)