313
edits
| Line 314: | Line 314: | ||
Treehydra contains the basic machinery to detect conditionals and exclude branches that cannot be executed. The user only has to supply the flowStateCond function. | Treehydra contains the basic machinery to detect conditionals and exclude branches that cannot be executed. The user only has to supply the flowStateCond function. | ||
== | == Correlated Variables == | ||
Some analyses, such as outparams, require tracking pairs or tuples of correlated variables, not just single variables. This requires a modification to the notion of abstract state we used in the basic explanation. | |||
Even constant propagation can theoretically benefit from tracking pairs. Consider this example: | |||
if (foo) { | |||
a = 1; | |||
b = 2; | |||
} else { | |||
b = 1; | |||
a = 2; | |||
} | |||
c = a + b; | |||
It's clear that c is a constant, 3. But our constant propagation won't detect it: after the if, we have state "a = ?, b = ?". | |||
== ESP == | == ESP == | ||
edits