sampsyo / bril

an educational compiler intermediate representation
https://capra.cs.cornell.edu/bril/
MIT License
573 stars 239 forks source link

Address #295 #296

Closed Pat-Lafon closed 1 year ago

Pat-Lafon commented 1 year ago

brilirs incorrectly did not look for control flow from the final basic block in a function. I think it has just so happened that most functions are linear in their control flow and that all functions have terminated on their final block.

The fix is super quick, just moving the "last block" check into the else arm after checking for an effectful last instructions in the block.

I've added the example from #295 as a test case. Thanks to @SanjitBasker for the report!