-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
virtualprocess: implement a better control flow selection logic
The goal of this commit is to refine `add_control_flow!`, which requests concretization of the minimal necessary control flow to evaluate statements whose concretization have already been requested. The basic approach is to check if there are any active successors for each basic block, and if there is an active successor and the terminator is not a fall-through, then request the concretization of that terminator. Additionally, for conditional terminators, a simple optimization using post-domination analysis is also performed: we can ignore the control flow of a conditional terminator and treat it as a fall-through if only one of its successors is active and the active block post-dominates the inactive one, since the post-domination ensures that the active basic block will be reached regardless of the control flow.
- Loading branch information
Showing
2 changed files
with
65 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters