We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
There are certain situations where redundant PDG nodes are selected protocols, which makes selection slower.
The following generates two queries to shell, manifest in the ANF translation:
shell
if (1 <= shell && shell <= 3) { ... }
ANF translation:
let tmp1 = shell.get() let tmp2 = shell.get() let tmp3 = 1 <= tmp1 let tmp4 = tmp2 <= 3 let tmp5 = tmp3 && tmp4 if (tmp5) { ... }
but since it's impossible for shell to be modified in the middle of evaluating the expression, this can be a single query. Like so:
let tmp1 = shell.get() let tmp3 = 1 <= tmp1 let tmp4 = tmp1 <= 3 let tmp5 = tmp3 && tmp4 if (tmp5) { ... }
Downgrades are useless after label inference, so they can be removed.
Example:
let tmp1 = x let tmp2 = downgrade(x, {...}) if (tmp2) { ... }
Can be rewritten as:
let tmp1 = x if (tmp1) { ... }
The solution is to have a redundancy removal pass before generating the PDG.
The text was updated successfully, but these errors were encountered:
rolph-recto
No branches or pull requests
There are certain situations where redundant PDG nodes are selected protocols, which makes selection slower.
Scenario 1: redundant queries
The following generates two queries to
shell
, manifest in the ANF translation:ANF translation:
but since it's impossible for
shell
to be modified in the middle of evaluating the expression, this can be a single query. Like so:Scenario 2: downgrades
Downgrades are useless after label inference, so they can be removed.
Example:
Can be rewritten as:
The solution is to have a redundancy removal pass before generating the PDG.
The text was updated successfully, but these errors were encountered: