You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The front-end of the bytecode compiler produces a broken CFG.
A number of "basic-block"s have terminators before their end.
This makes the back-end optimizations unsafe as they rely of a well-formed CFG.
The fix is simple. Insert a check that the CFG is well-formed before doing any optimizations, then fix up the front-end.
Once done, we can be more aggressive with optimizations without worrying that things will break for no apparent reason.
Basic blocks themselves are a block of IR that has a single entry point but possibly multiple exit points.
In particular, compile.c's label_exception_targets has the assertion (assert(i == b->b_iused -1);) that jumps only occur as the last instruction of a block.
Does the devguide need updating, or do I have a misunderstanding?
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: