Python: Simplyfy sequence stores

This commit is contained in:
Rasmus Lerchedahl Petersen
2020-08-03 08:16:43 +02:00
parent 4a8d532a71
commit f21777c6ce
3 changed files with 49 additions and 32 deletions

View File

@@ -224,16 +224,13 @@ predicate jumpStep(Node pred, Node succ) {
* content `c`.
*/
predicate storeStep(Node nodeFrom, Content c, Node nodeTo) {
// Definition
// `x = (..., 42, ...)`
// Sequence
// `(..., 42, ...)`
// or
// `x = [..., 42, ...]`
// nodeFrom is `f(42)`, cfg node
// nodeTo is `x`, essa var
exists(SequenceNode s |
nodeFrom.(CfgNode).getNode() = s.getAnElement() and
nodeTo.(EssaNode).getVar().getDefinition().(AssignmentDefinition).getValue() = s
)
// `[..., 42, ...]`
// nodeFrom is `42`, cfg node
// nodeTo is the sequence, say `[..., 42, ...]`, cfg node
nodeTo.(CfgNode).getNode().(SequenceNode).getAnElement() = nodeFrom.(CfgNode).getNode()
}
/**