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!
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!