Ruby: Adjust locations of synthesized nodes

This commit is contained in:
Tom Hvitved
2023-08-14 14:37:47 +02:00
parent 77fca277fe
commit e96cbeb00a
11 changed files with 137 additions and 111 deletions

View File

@@ -1276,13 +1276,19 @@ private module ForLoopDesugar {
result.getParent() = getForLoopPatternChild(for)
}
/** Holds if `n` is an access to variable `v` in the pattern of `for`. */
pragma[nomagic]
private predicate forLoopVariableAccess(Ruby::For for, Ruby::AstNode n, VariableReal v) {
n = getForLoopPatternChild(for) and
access(n, v)
}
/** Holds if `v` is the `i`th iteration variable of `for`. */
private predicate forLoopVariable(Ruby::For for, VariableReal v, int i) {
v =
rank[i + 1](VariableReal v0, Ruby::AstNode n, Location l |
n = getForLoopPatternChild(for) and
l = n.getLocation() and
access(n, v0)
forLoopVariableAccess(for, n, v0) and
l = n.getLocation()
|
v0 order by l.getStartLine(), l.getStartColumn()
)
@@ -1406,6 +1412,18 @@ private module ForLoopDesugar {
)
}
pragma[nomagic]
private predicate isDesugaredInitNode(ForExpr for, Variable v, AstNode n) {
exists(StmtSequence seq, AssignExpr ae |
seq = for.getDesugared() and
n = seq.getStmt(_) and
ae = n.(IfExpr).getThen() and
v = ae.getLeftOperand().getAVariable()
)
or
isDesugaredInitNode(for, v, n.getParent())
}
private class ForLoopSynthesis extends Synthesis {
final override predicate child(AstNode parent, int i, Child child) {
forLoopSynthesis(parent, i, child)
@@ -1425,6 +1443,14 @@ private module ForLoopDesugar {
final override predicate excludeFromControlFlowTree(AstNode n) {
n = any(ForExpr for).getBody()
}
final override predicate location(AstNode n, Location l) {
exists(ForExpr for, Ruby::AstNode access, Variable v |
forLoopVariableAccess(toTsFor(for), access, v) and
isDesugaredInitNode(for, v, n) and
l = access.getLocation()
)
}
}
}

View File

@@ -10,8 +10,8 @@ exprValue
| calls/calls.rb:26:7:26:7 | 1 | 1 | int |
| calls/calls.rb:36:9:36:11 | 100 | 100 | int |
| calls/calls.rb:36:14:36:16 | 200 | 200 | int |
| calls/calls.rb:226:1:228:3 | nil | nil | nil |
| calls/calls.rb:229:1:231:3 | nil | nil | nil |
| calls/calls.rb:226:5:226:5 | nil | nil | nil |
| calls/calls.rb:229:5:229:5 | nil | nil | nil |
| calls/calls.rb:280:5:280:8 | :blah | :blah | symbol |
| calls/calls.rb:281:5:281:8 | :blah | :blah | symbol |
| calls/calls.rb:290:11:290:16 | "blah" | blah | string |
@@ -59,12 +59,12 @@ exprValue
| calls/calls.rb:322:31:322:31 | 1 | 1 | int |
| calls/calls.rb:322:37:322:37 | 2 | 2 | int |
| calls/calls.rb:330:31:330:37 | "error" | error | string |
| calls/calls.rb:342:1:344:3 | nil | nil | nil |
| calls/calls.rb:342:1:344:3 | nil | nil | nil |
| calls/calls.rb:342:1:344:3 | nil | nil | nil |
| calls/calls.rb:342:5:342:5 | 0 | 0 | int |
| calls/calls.rb:342:5:342:5 | nil | nil | nil |
| calls/calls.rb:342:8:342:8 | 1 | 1 | int |
| calls/calls.rb:342:8:342:8 | nil | nil | nil |
| calls/calls.rb:342:11:342:11 | 2 | 2 | int |
| calls/calls.rb:342:11:342:11 | nil | nil | nil |
| calls/calls.rb:342:18:342:18 | 1 | 1 | int |
| calls/calls.rb:342:20:342:20 | 2 | 2 | int |
| calls/calls.rb:342:22:342:22 | 3 | 3 | int |
@@ -335,24 +335,24 @@ exprValue
| control/loops.rb:4:5:4:5 | 0 | 0 | int |
| control/loops.rb:5:5:5:5 | 0 | 0 | int |
| control/loops.rb:6:5:6:5 | 0 | 0 | int |
| control/loops.rb:9:1:12:3 | nil | nil | nil |
| control/loops.rb:9:5:9:5 | nil | nil | nil |
| control/loops.rb:9:10:9:10 | 1 | 1 | int |
| control/loops.rb:9:13:9:14 | 10 | 10 | int |
| control/loops.rb:16:1:19:3 | nil | nil | nil |
| control/loops.rb:16:5:16:5 | nil | nil | nil |
| control/loops.rb:16:10:16:10 | 1 | 1 | int |
| control/loops.rb:16:13:16:14 | 10 | 10 | int |
| control/loops.rb:22:1:25:3 | nil | nil | nil |
| control/loops.rb:22:1:25:3 | nil | nil | nil |
| control/loops.rb:22:5:22:7 | 0 | 0 | int |
| control/loops.rb:22:5:22:7 | nil | nil | nil |
| control/loops.rb:22:10:22:14 | 1 | 1 | int |
| control/loops.rb:22:10:22:14 | nil | nil | nil |
| control/loops.rb:22:20:22:22 | :foo | :foo | symbol |
| control/loops.rb:22:25:22:25 | 0 | 0 | int |
| control/loops.rb:22:28:22:30 | :bar | :bar | symbol |
| control/loops.rb:22:33:22:33 | 1 | 1 | int |
| control/loops.rb:28:1:32:3 | nil | nil | nil |
| control/loops.rb:28:1:32:3 | nil | nil | nil |
| control/loops.rb:28:6:28:8 | 0 | 0 | int |
| control/loops.rb:28:6:28:8 | nil | nil | nil |
| control/loops.rb:28:11:28:15 | 1 | 1 | int |
| control/loops.rb:28:11:28:15 | nil | nil | nil |
| control/loops.rb:28:22:28:24 | :foo | :foo | symbol |
| control/loops.rb:28:27:28:27 | 0 | 0 | int |
| control/loops.rb:28:30:28:32 | :bar | :bar | symbol |
@@ -376,7 +376,7 @@ exprValue
| control/loops.rb:66:11:66:11 | y | 0 | int |
| erb/template.html.erb:19:5:19:17 | "hello world" | hello world | string |
| erb/template.html.erb:25:9:25:10 | "" | | string |
| erb/template.html.erb:27:6:31:8 | nil | nil | nil |
| erb/template.html.erb:27:10:27:10 | nil | nil | nil |
| erb/template.html.erb:27:16:27:20 | "foo" | foo | string |
| erb/template.html.erb:27:23:27:27 | "bar" | bar | string |
| erb/template.html.erb:27:30:27:34 | "baz" | baz | string |
@@ -946,8 +946,8 @@ exprCfgNodeValue
| calls/calls.rb:26:7:26:7 | 1 | 1 | int |
| calls/calls.rb:36:9:36:11 | 100 | 100 | int |
| calls/calls.rb:36:14:36:16 | 200 | 200 | int |
| calls/calls.rb:226:1:228:3 | nil | nil | nil |
| calls/calls.rb:229:1:231:3 | nil | nil | nil |
| calls/calls.rb:226:5:226:5 | nil | nil | nil |
| calls/calls.rb:229:5:229:5 | nil | nil | nil |
| calls/calls.rb:280:5:280:8 | :blah | :blah | symbol |
| calls/calls.rb:281:5:281:8 | :blah | :blah | symbol |
| calls/calls.rb:290:11:290:16 | "blah" | blah | string |
@@ -995,12 +995,12 @@ exprCfgNodeValue
| calls/calls.rb:322:31:322:31 | 1 | 1 | int |
| calls/calls.rb:322:37:322:37 | 2 | 2 | int |
| calls/calls.rb:330:31:330:37 | "error" | error | string |
| calls/calls.rb:342:1:344:3 | nil | nil | nil |
| calls/calls.rb:342:1:344:3 | nil | nil | nil |
| calls/calls.rb:342:1:344:3 | nil | nil | nil |
| calls/calls.rb:342:5:342:5 | 0 | 0 | int |
| calls/calls.rb:342:5:342:5 | nil | nil | nil |
| calls/calls.rb:342:8:342:8 | 1 | 1 | int |
| calls/calls.rb:342:8:342:8 | nil | nil | nil |
| calls/calls.rb:342:11:342:11 | 2 | 2 | int |
| calls/calls.rb:342:11:342:11 | nil | nil | nil |
| calls/calls.rb:342:18:342:18 | 1 | 1 | int |
| calls/calls.rb:342:20:342:20 | 2 | 2 | int |
| calls/calls.rb:342:22:342:22 | 3 | 3 | int |
@@ -1243,24 +1243,24 @@ exprCfgNodeValue
| control/loops.rb:4:5:4:5 | 0 | 0 | int |
| control/loops.rb:5:5:5:5 | 0 | 0 | int |
| control/loops.rb:6:5:6:5 | 0 | 0 | int |
| control/loops.rb:9:1:12:3 | nil | nil | nil |
| control/loops.rb:9:5:9:5 | nil | nil | nil |
| control/loops.rb:9:10:9:10 | 1 | 1 | int |
| control/loops.rb:9:13:9:14 | 10 | 10 | int |
| control/loops.rb:16:1:19:3 | nil | nil | nil |
| control/loops.rb:16:5:16:5 | nil | nil | nil |
| control/loops.rb:16:10:16:10 | 1 | 1 | int |
| control/loops.rb:16:13:16:14 | 10 | 10 | int |
| control/loops.rb:22:1:25:3 | nil | nil | nil |
| control/loops.rb:22:1:25:3 | nil | nil | nil |
| control/loops.rb:22:5:22:7 | 0 | 0 | int |
| control/loops.rb:22:5:22:7 | nil | nil | nil |
| control/loops.rb:22:10:22:14 | 1 | 1 | int |
| control/loops.rb:22:10:22:14 | nil | nil | nil |
| control/loops.rb:22:20:22:22 | :foo | :foo | symbol |
| control/loops.rb:22:25:22:25 | 0 | 0 | int |
| control/loops.rb:22:28:22:30 | :bar | :bar | symbol |
| control/loops.rb:22:33:22:33 | 1 | 1 | int |
| control/loops.rb:28:1:32:3 | nil | nil | nil |
| control/loops.rb:28:1:32:3 | nil | nil | nil |
| control/loops.rb:28:6:28:8 | 0 | 0 | int |
| control/loops.rb:28:6:28:8 | nil | nil | nil |
| control/loops.rb:28:11:28:15 | 1 | 1 | int |
| control/loops.rb:28:11:28:15 | nil | nil | nil |
| control/loops.rb:28:22:28:24 | :foo | :foo | symbol |
| control/loops.rb:28:27:28:27 | 0 | 0 | int |
| control/loops.rb:28:30:28:32 | :bar | :bar | symbol |
@@ -1284,7 +1284,7 @@ exprCfgNodeValue
| control/loops.rb:66:11:66:11 | y | 0 | int |
| erb/template.html.erb:19:5:19:17 | "hello world" | hello world | string |
| erb/template.html.erb:25:9:25:10 | "" | | string |
| erb/template.html.erb:27:6:31:8 | nil | nil | nil |
| erb/template.html.erb:27:10:27:10 | nil | nil | nil |
| erb/template.html.erb:27:16:27:20 | "foo" | foo | string |
| erb/template.html.erb:27:23:27:27 | "bar" | bar | string |
| erb/template.html.erb:27:30:27:34 | "baz" | baz | string |

View File

@@ -250,14 +250,14 @@ callsWithReceiver
| calls.rb:222:11:222:13 | call to foo | calls.rb:222:11:222:13 | self |
| calls.rb:223:1:223:6 | call to bar | calls.rb:223:1:223:1 | X |
| calls.rb:223:14:223:19 | call to foo | calls.rb:223:14:223:14 | X |
| calls.rb:226:1:228:3 | ! ... | calls.rb:226:1:228:3 | defined? ... |
| calls.rb:226:1:228:3 | call to each | calls.rb:226:10:226:12 | call to bar |
| calls.rb:226:1:228:3 | defined? ... | calls.rb:226:1:228:3 | x |
| calls.rb:226:5:226:5 | ! ... | calls.rb:226:5:226:5 | defined? ... |
| calls.rb:226:5:226:5 | defined? ... | calls.rb:226:5:226:5 | x |
| calls.rb:226:10:226:12 | call to bar | calls.rb:226:10:226:12 | self |
| calls.rb:227:3:227:5 | call to baz | calls.rb:227:3:227:5 | self |
| calls.rb:229:1:231:3 | ! ... | calls.rb:229:1:231:3 | defined? ... |
| calls.rb:229:1:231:3 | call to each | calls.rb:229:10:229:15 | call to bar |
| calls.rb:229:1:231:3 | defined? ... | calls.rb:229:1:231:3 | x |
| calls.rb:229:5:229:5 | ! ... | calls.rb:229:5:229:5 | defined? ... |
| calls.rb:229:5:229:5 | defined? ... | calls.rb:229:5:229:5 | x |
| calls.rb:229:10:229:15 | call to bar | calls.rb:229:10:229:10 | X |
| calls.rb:230:3:230:8 | call to baz | calls.rb:230:3:230:3 | X |
| calls.rb:234:1:234:3 | call to foo | calls.rb:234:1:234:3 | self |
@@ -378,17 +378,17 @@ callsWithReceiver
| calls.rb:330:13:330:15 | call to bar | calls.rb:330:13:330:15 | self |
| calls.rb:330:25:330:37 | call to print | calls.rb:330:25:330:37 | self |
| calls.rb:338:3:338:13 | call to bar | calls.rb:338:3:338:13 | self |
| calls.rb:342:1:344:3 | ! ... | calls.rb:342:1:344:3 | defined? ... |
| calls.rb:342:1:344:3 | ! ... | calls.rb:342:1:344:3 | defined? ... |
| calls.rb:342:1:344:3 | ! ... | calls.rb:342:1:344:3 | defined? ... |
| calls.rb:342:1:344:3 | * ... | calls.rb:342:1:344:3 | __synth__0__1 |
| calls.rb:342:1:344:3 | call to each | calls.rb:342:16:342:33 | [...] |
| calls.rb:342:1:344:3 | defined? ... | calls.rb:342:1:344:3 | x |
| calls.rb:342:1:344:3 | defined? ... | calls.rb:342:1:344:3 | y |
| calls.rb:342:1:344:3 | defined? ... | calls.rb:342:1:344:3 | z |
| calls.rb:342:5:342:5 | ! ... | calls.rb:342:5:342:5 | defined? ... |
| calls.rb:342:5:342:5 | call to [] | calls.rb:342:5:342:5 | __synth__3__1 |
| calls.rb:342:5:342:5 | defined? ... | calls.rb:342:5:342:5 | x |
| calls.rb:342:8:342:8 | ! ... | calls.rb:342:8:342:8 | defined? ... |
| calls.rb:342:8:342:8 | call to [] | calls.rb:342:8:342:8 | __synth__3__1 |
| calls.rb:342:8:342:8 | defined? ... | calls.rb:342:8:342:8 | y |
| calls.rb:342:11:342:11 | ! ... | calls.rb:342:11:342:11 | defined? ... |
| calls.rb:342:11:342:11 | call to [] | calls.rb:342:11:342:11 | __synth__3__1 |
| calls.rb:342:11:342:11 | defined? ... | calls.rb:342:11:342:11 | z |
| calls.rb:342:16:342:33 | call to [] | calls.rb:342:16:342:33 | Array |
| calls.rb:342:17:342:23 | call to [] | calls.rb:342:17:342:23 | Array |
| calls.rb:342:26:342:32 | call to [] | calls.rb:342:26:342:32 | Array |

View File

@@ -22,12 +22,12 @@ conditionalExprs
| conditionals.rb:61:1:64:3 | if ... | IfExpr | conditionals.rb:61:4:61:8 | ... > ... | conditionals.rb:63:1:63:4 | else ... | false |
| conditionals.rb:67:1:70:3 | if ... | IfExpr | conditionals.rb:67:4:67:8 | ... > ... | conditionals.rb:67:10:67:13 | then ... | true |
| conditionals.rb:67:1:70:3 | if ... | IfExpr | conditionals.rb:67:4:67:8 | ... > ... | conditionals.rb:68:1:69:5 | else ... | false |
| loops.rb:9:1:12:3 | if ... | IfExpr | loops.rb:9:1:12:3 | ! ... | loops.rb:9:1:12:3 | ... = ... | true |
| loops.rb:16:1:19:3 | if ... | IfExpr | loops.rb:16:1:19:3 | ! ... | loops.rb:16:1:19:3 | ... = ... | true |
| loops.rb:22:1:25:3 | if ... | IfExpr | loops.rb:22:1:25:3 | ! ... | loops.rb:22:1:25:3 | ... = ... | true |
| loops.rb:22:1:25:3 | if ... | IfExpr | loops.rb:22:1:25:3 | ! ... | loops.rb:22:1:25:3 | ... = ... | true |
| loops.rb:28:1:32:3 | if ... | IfExpr | loops.rb:28:1:32:3 | ! ... | loops.rb:28:1:32:3 | ... = ... | true |
| loops.rb:28:1:32:3 | if ... | IfExpr | loops.rb:28:1:32:3 | ! ... | loops.rb:28:1:32:3 | ... = ... | true |
| loops.rb:9:5:9:5 | if ... | IfExpr | loops.rb:9:5:9:5 | ! ... | loops.rb:9:5:9:5 | ... = ... | true |
| loops.rb:16:5:16:5 | if ... | IfExpr | loops.rb:16:5:16:5 | ! ... | loops.rb:16:5:16:5 | ... = ... | true |
| loops.rb:22:5:22:7 | if ... | IfExpr | loops.rb:22:5:22:7 | ! ... | loops.rb:22:5:22:7 | ... = ... | true |
| loops.rb:22:10:22:14 | if ... | IfExpr | loops.rb:22:10:22:14 | ! ... | loops.rb:22:10:22:14 | ... = ... | true |
| loops.rb:28:6:28:8 | if ... | IfExpr | loops.rb:28:6:28:8 | ! ... | loops.rb:28:6:28:8 | ... = ... | true |
| loops.rb:28:11:28:15 | if ... | IfExpr | loops.rb:28:11:28:15 | ! ... | loops.rb:28:11:28:15 | ... = ... | true |
ifExprs
| conditionals.rb:10:1:12:3 | if ... | IfExpr | conditionals.rb:10:4:10:8 | ... > ... | conditionals.rb:10:10:11:5 | then ... | (none) | false |
| conditionals.rb:15:1:19:3 | if ... | IfExpr | conditionals.rb:15:4:15:9 | ... == ... | conditionals.rb:15:10:16:5 | then ... | else ... | false |

View File

@@ -27,15 +27,15 @@
| conditionals.rb:61:1:64:3 | if ... | IfExpr |
| conditionals.rb:67:1:70:3 | if ... | IfExpr |
| loops.rb:9:1:12:3 | for ... in ... | ForExpr |
| loops.rb:9:1:12:3 | if ... | IfExpr |
| loops.rb:9:5:9:5 | if ... | IfExpr |
| loops.rb:16:1:19:3 | for ... in ... | ForExpr |
| loops.rb:16:1:19:3 | if ... | IfExpr |
| loops.rb:16:5:16:5 | if ... | IfExpr |
| loops.rb:22:1:25:3 | for ... in ... | ForExpr |
| loops.rb:22:1:25:3 | if ... | IfExpr |
| loops.rb:22:1:25:3 | if ... | IfExpr |
| loops.rb:22:5:22:7 | if ... | IfExpr |
| loops.rb:22:10:22:14 | if ... | IfExpr |
| loops.rb:28:1:32:3 | for ... in ... | ForExpr |
| loops.rb:28:1:32:3 | if ... | IfExpr |
| loops.rb:28:1:32:3 | if ... | IfExpr |
| loops.rb:28:6:28:8 | if ... | IfExpr |
| loops.rb:28:11:28:15 | if ... | IfExpr |
| loops.rb:35:1:39:3 | while ... | WhileExpr |
| loops.rb:42:1:45:3 | while ... | WhileExpr |
| loops.rb:48:1:48:19 | ... while ... | WhileModifierExpr |

View File

@@ -25,10 +25,10 @@ callsWithNoArguments
| cfg.rb:60:17:60:17 | call to b |
| cfg.rb:62:7:62:12 | * ... |
| cfg.rb:62:17:62:27 | * ... |
| cfg.rb:90:1:93:3 | [false] ! ... |
| cfg.rb:90:1:93:3 | [true] ! ... |
| cfg.rb:90:1:93:3 | call to each |
| cfg.rb:90:1:93:3 | defined? ... |
| cfg.rb:90:5:90:5 | [false] ! ... |
| cfg.rb:90:5:90:5 | [true] ! ... |
| cfg.rb:90:5:90:5 | defined? ... |
| cfg.rb:98:10:98:15 | ** ... |
| cfg.rb:98:30:98:35 | ** ... |
| cfg.rb:138:17:138:23 | * ... |

View File

@@ -2399,7 +2399,7 @@
| UseUseExplosion.rb:24:5:25:7 | use | UseUseExplosion.rb:1:1:26:3 | C |
| local_dataflow.rb:1:1:7:3 | self (foo) | local_dataflow.rb:3:8:3:10 | self |
| local_dataflow.rb:1:1:7:3 | self in foo | local_dataflow.rb:1:1:7:3 | self (foo) |
| local_dataflow.rb:1:1:150:3 | <uninitialized> | local_dataflow.rb:10:5:13:3 | x |
| local_dataflow.rb:1:1:150:3 | <uninitialized> | local_dataflow.rb:10:9:10:9 | x |
| local_dataflow.rb:1:1:150:3 | self (local_dataflow.rb) | local_dataflow.rb:49:1:53:3 | self |
| local_dataflow.rb:1:9:1:9 | a | local_dataflow.rb:1:9:1:9 | a |
| local_dataflow.rb:1:9:1:9 | a | local_dataflow.rb:2:7:2:7 | a |
@@ -2426,44 +2426,44 @@
| local_dataflow.rb:9:9:9:15 | call to [] | local_dataflow.rb:9:1:9:5 | array |
| local_dataflow.rb:9:9:9:15 | call to [] | local_dataflow.rb:9:1:9:15 | ... = ... |
| local_dataflow.rb:10:5:13:3 | ... | local_dataflow.rb:10:1:13:3 | ... = ... |
| local_dataflow.rb:10:5:13:3 | ... = ... | local_dataflow.rb:10:5:13:3 | if ... |
| local_dataflow.rb:10:5:13:3 | <captured entry> self | local_dataflow.rb:11:1:11:2 | self |
| local_dataflow.rb:10:5:13:3 | <captured exit> x | local_dataflow.rb:15:1:17:3 | x |
| local_dataflow.rb:10:5:13:3 | <captured exit> x | local_dataflow.rb:15:5:15:5 | x |
| local_dataflow.rb:10:5:13:3 | __synth__0__1 | local_dataflow.rb:10:5:13:3 | ... = ... |
| local_dataflow.rb:10:5:13:3 | __synth__0__1 | local_dataflow.rb:10:5:13:3 | __synth__0__1 |
| local_dataflow.rb:10:5:13:3 | __synth__0__1 | local_dataflow.rb:10:5:13:3 | __synth__0__1 |
| local_dataflow.rb:10:5:13:3 | __synth__0__1 | local_dataflow.rb:10:9:10:9 | x |
| local_dataflow.rb:10:5:13:3 | call to each | local_dataflow.rb:10:5:13:3 | ... |
| local_dataflow.rb:10:5:13:3 | nil | local_dataflow.rb:10:5:13:3 | ... = ... |
| local_dataflow.rb:10:5:13:3 | nil | local_dataflow.rb:10:5:13:3 | x |
| local_dataflow.rb:10:5:13:3 | x | local_dataflow.rb:10:5:13:3 | phi |
| local_dataflow.rb:10:9:10:9 | ... = ... | local_dataflow.rb:10:9:10:9 | if ... |
| local_dataflow.rb:10:9:10:9 | nil | local_dataflow.rb:10:9:10:9 | ... = ... |
| local_dataflow.rb:10:9:10:9 | nil | local_dataflow.rb:10:9:10:9 | x |
| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | phi |
| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:12:5:12:5 | x |
| local_dataflow.rb:10:14:10:18 | [post] array | local_dataflow.rb:15:10:15:14 | array |
| local_dataflow.rb:10:14:10:18 | array | local_dataflow.rb:15:10:15:14 | array |
| local_dataflow.rb:11:1:11:2 | [post] self | local_dataflow.rb:12:3:12:5 | self |
| local_dataflow.rb:11:1:11:2 | self | local_dataflow.rb:12:3:12:5 | self |
| local_dataflow.rb:15:1:17:3 | ... = ... | local_dataflow.rb:15:1:17:3 | if ... |
| local_dataflow.rb:15:1:17:3 | <captured exit> x | local_dataflow.rb:19:1:21:3 | x |
| local_dataflow.rb:15:1:17:3 | <captured exit> x | local_dataflow.rb:19:5:19:5 | x |
| local_dataflow.rb:15:1:17:3 | __synth__0__1 | local_dataflow.rb:15:1:17:3 | ... = ... |
| local_dataflow.rb:15:1:17:3 | __synth__0__1 | local_dataflow.rb:15:1:17:3 | __synth__0__1 |
| local_dataflow.rb:15:1:17:3 | __synth__0__1 | local_dataflow.rb:15:1:17:3 | __synth__0__1 |
| local_dataflow.rb:15:1:17:3 | __synth__0__1 | local_dataflow.rb:15:5:15:5 | x |
| local_dataflow.rb:15:1:17:3 | call to each | local_dataflow.rb:15:1:17:3 | ... |
| local_dataflow.rb:15:1:17:3 | nil | local_dataflow.rb:15:1:17:3 | ... = ... |
| local_dataflow.rb:15:1:17:3 | nil | local_dataflow.rb:15:1:17:3 | x |
| local_dataflow.rb:15:1:17:3 | x | local_dataflow.rb:15:1:17:3 | phi |
| local_dataflow.rb:15:5:15:5 | ... = ... | local_dataflow.rb:15:5:15:5 | if ... |
| local_dataflow.rb:15:5:15:5 | nil | local_dataflow.rb:15:5:15:5 | ... = ... |
| local_dataflow.rb:15:5:15:5 | nil | local_dataflow.rb:15:5:15:5 | x |
| local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | phi |
| local_dataflow.rb:15:10:15:14 | [post] array | local_dataflow.rb:19:10:19:14 | array |
| local_dataflow.rb:15:10:15:14 | array | local_dataflow.rb:19:10:19:14 | array |
| local_dataflow.rb:16:9:16:10 | 10 | local_dataflow.rb:16:3:16:10 | break |
| local_dataflow.rb:19:1:21:3 | ... = ... | local_dataflow.rb:19:1:21:3 | if ... |
| local_dataflow.rb:19:1:21:3 | __synth__0__1 | local_dataflow.rb:19:1:21:3 | ... = ... |
| local_dataflow.rb:19:1:21:3 | __synth__0__1 | local_dataflow.rb:19:1:21:3 | __synth__0__1 |
| local_dataflow.rb:19:1:21:3 | __synth__0__1 | local_dataflow.rb:19:1:21:3 | __synth__0__1 |
| local_dataflow.rb:19:1:21:3 | __synth__0__1 | local_dataflow.rb:19:5:19:5 | x |
| local_dataflow.rb:19:1:21:3 | call to each | local_dataflow.rb:19:1:21:3 | ... |
| local_dataflow.rb:19:1:21:3 | nil | local_dataflow.rb:19:1:21:3 | ... = ... |
| local_dataflow.rb:19:1:21:3 | nil | local_dataflow.rb:19:1:21:3 | x |
| local_dataflow.rb:19:1:21:3 | x | local_dataflow.rb:19:1:21:3 | phi |
| local_dataflow.rb:19:5:19:5 | ... = ... | local_dataflow.rb:19:5:19:5 | if ... |
| local_dataflow.rb:19:5:19:5 | nil | local_dataflow.rb:19:5:19:5 | ... = ... |
| local_dataflow.rb:19:5:19:5 | nil | local_dataflow.rb:19:5:19:5 | x |
| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | phi |
| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:20:6:20:6 | x |
| local_dataflow.rb:24:2:24:8 | break | local_dataflow.rb:23:1:25:3 | while ... |
| local_dataflow.rb:24:8:24:8 | 5 | local_dataflow.rb:24:2:24:8 | break |

View File

@@ -831,23 +831,23 @@ arg
| local_dataflow.rb:9:10:9:10 | 1 | local_dataflow.rb:9:9:9:15 | call to [] | position 0 |
| local_dataflow.rb:9:12:9:12 | 2 | local_dataflow.rb:9:9:9:15 | call to [] | position 1 |
| local_dataflow.rb:9:14:9:14 | 3 | local_dataflow.rb:9:9:9:15 | call to [] | position 2 |
| local_dataflow.rb:10:5:13:3 | defined? ... | local_dataflow.rb:10:5:13:3 | [false] ! ... | self |
| local_dataflow.rb:10:5:13:3 | defined? ... | local_dataflow.rb:10:5:13:3 | [true] ! ... | self |
| local_dataflow.rb:10:5:13:3 | x | local_dataflow.rb:10:5:13:3 | defined? ... | self |
| local_dataflow.rb:10:5:13:3 | { ... } | local_dataflow.rb:10:5:13:3 | call to each | block |
| local_dataflow.rb:10:9:10:9 | defined? ... | local_dataflow.rb:10:9:10:9 | [false] ! ... | self |
| local_dataflow.rb:10:9:10:9 | defined? ... | local_dataflow.rb:10:9:10:9 | [true] ! ... | self |
| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | defined? ... | self |
| local_dataflow.rb:10:14:10:18 | array | local_dataflow.rb:10:5:13:3 | call to each | self |
| local_dataflow.rb:11:1:11:2 | self | local_dataflow.rb:11:1:11:2 | call to do | self |
| local_dataflow.rb:12:3:12:5 | self | local_dataflow.rb:12:3:12:5 | call to p | self |
| local_dataflow.rb:12:5:12:5 | x | local_dataflow.rb:12:3:12:5 | call to p | position 0 |
| local_dataflow.rb:15:1:17:3 | defined? ... | local_dataflow.rb:15:1:17:3 | [false] ! ... | self |
| local_dataflow.rb:15:1:17:3 | defined? ... | local_dataflow.rb:15:1:17:3 | [true] ! ... | self |
| local_dataflow.rb:15:1:17:3 | x | local_dataflow.rb:15:1:17:3 | defined? ... | self |
| local_dataflow.rb:15:1:17:3 | { ... } | local_dataflow.rb:15:1:17:3 | call to each | block |
| local_dataflow.rb:15:5:15:5 | defined? ... | local_dataflow.rb:15:5:15:5 | [false] ! ... | self |
| local_dataflow.rb:15:5:15:5 | defined? ... | local_dataflow.rb:15:5:15:5 | [true] ! ... | self |
| local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | defined? ... | self |
| local_dataflow.rb:15:10:15:14 | array | local_dataflow.rb:15:1:17:3 | call to each | self |
| local_dataflow.rb:19:1:21:3 | defined? ... | local_dataflow.rb:19:1:21:3 | [false] ! ... | self |
| local_dataflow.rb:19:1:21:3 | defined? ... | local_dataflow.rb:19:1:21:3 | [true] ! ... | self |
| local_dataflow.rb:19:1:21:3 | x | local_dataflow.rb:19:1:21:3 | defined? ... | self |
| local_dataflow.rb:19:1:21:3 | { ... } | local_dataflow.rb:19:1:21:3 | call to each | block |
| local_dataflow.rb:19:5:19:5 | defined? ... | local_dataflow.rb:19:5:19:5 | [false] ! ... | self |
| local_dataflow.rb:19:5:19:5 | defined? ... | local_dataflow.rb:19:5:19:5 | [true] ! ... | self |
| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | defined? ... | self |
| local_dataflow.rb:19:10:19:14 | array | local_dataflow.rb:19:1:21:3 | call to each | self |
| local_dataflow.rb:20:6:20:6 | x | local_dataflow.rb:20:6:20:10 | ... > ... | self |
| local_dataflow.rb:20:10:20:10 | 1 | local_dataflow.rb:20:6:20:10 | ... > ... | position 0 |

View File

@@ -2842,7 +2842,7 @@
| local_dataflow.rb:1:1:7:3 | self (foo) | local_dataflow.rb:3:8:3:10 | self |
| local_dataflow.rb:1:1:7:3 | self in foo | local_dataflow.rb:1:1:7:3 | self (foo) |
| local_dataflow.rb:1:1:7:3 | synthetic *args | local_dataflow.rb:1:9:1:9 | a |
| local_dataflow.rb:1:1:150:3 | <uninitialized> | local_dataflow.rb:10:5:13:3 | x |
| local_dataflow.rb:1:1:150:3 | <uninitialized> | local_dataflow.rb:10:9:10:9 | x |
| local_dataflow.rb:1:1:150:3 | self (local_dataflow.rb) | local_dataflow.rb:49:1:53:3 | self |
| local_dataflow.rb:1:9:1:9 | a | local_dataflow.rb:1:9:1:9 | a |
| local_dataflow.rb:1:9:1:9 | a | local_dataflow.rb:2:7:2:7 | a |
@@ -2872,56 +2872,56 @@
| local_dataflow.rb:9:9:9:15 | call to [] | local_dataflow.rb:9:1:9:5 | array |
| local_dataflow.rb:9:9:9:15 | call to [] | local_dataflow.rb:9:1:9:15 | ... = ... |
| local_dataflow.rb:10:5:13:3 | ... | local_dataflow.rb:10:1:13:3 | ... = ... |
| local_dataflow.rb:10:5:13:3 | ... = ... | local_dataflow.rb:10:5:13:3 | if ... |
| local_dataflow.rb:10:5:13:3 | <captured entry> self | local_dataflow.rb:11:1:11:2 | self |
| local_dataflow.rb:10:5:13:3 | <captured exit> x | local_dataflow.rb:15:1:17:3 | x |
| local_dataflow.rb:10:5:13:3 | <captured exit> x | local_dataflow.rb:15:5:15:5 | x |
| local_dataflow.rb:10:5:13:3 | __synth__0__1 | local_dataflow.rb:10:5:13:3 | ... = ... |
| local_dataflow.rb:10:5:13:3 | __synth__0__1 | local_dataflow.rb:10:5:13:3 | __synth__0__1 |
| local_dataflow.rb:10:5:13:3 | __synth__0__1 | local_dataflow.rb:10:5:13:3 | __synth__0__1 |
| local_dataflow.rb:10:5:13:3 | __synth__0__1 | local_dataflow.rb:10:9:10:9 | x |
| local_dataflow.rb:10:5:13:3 | call to each | local_dataflow.rb:10:5:13:3 | ... |
| local_dataflow.rb:10:5:13:3 | defined? ... | local_dataflow.rb:10:5:13:3 | [false] ! ... |
| local_dataflow.rb:10:5:13:3 | defined? ... | local_dataflow.rb:10:5:13:3 | [true] ! ... |
| local_dataflow.rb:10:5:13:3 | nil | local_dataflow.rb:10:5:13:3 | ... = ... |
| local_dataflow.rb:10:5:13:3 | nil | local_dataflow.rb:10:5:13:3 | x |
| local_dataflow.rb:10:5:13:3 | synthetic *args | local_dataflow.rb:10:5:13:3 | __synth__0__1 |
| local_dataflow.rb:10:5:13:3 | x | local_dataflow.rb:10:5:13:3 | defined? ... |
| local_dataflow.rb:10:5:13:3 | x | local_dataflow.rb:10:5:13:3 | phi |
| local_dataflow.rb:10:9:10:9 | ... = ... | local_dataflow.rb:10:9:10:9 | if ... |
| local_dataflow.rb:10:9:10:9 | defined? ... | local_dataflow.rb:10:9:10:9 | [false] ! ... |
| local_dataflow.rb:10:9:10:9 | defined? ... | local_dataflow.rb:10:9:10:9 | [true] ! ... |
| local_dataflow.rb:10:9:10:9 | nil | local_dataflow.rb:10:9:10:9 | ... = ... |
| local_dataflow.rb:10:9:10:9 | nil | local_dataflow.rb:10:9:10:9 | x |
| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | defined? ... |
| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | phi |
| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:12:5:12:5 | x |
| local_dataflow.rb:10:14:10:18 | [post] array | local_dataflow.rb:15:10:15:14 | array |
| local_dataflow.rb:10:14:10:18 | array | local_dataflow.rb:15:10:15:14 | array |
| local_dataflow.rb:11:1:11:2 | [post] self | local_dataflow.rb:12:3:12:5 | self |
| local_dataflow.rb:11:1:11:2 | self | local_dataflow.rb:12:3:12:5 | self |
| local_dataflow.rb:15:1:17:3 | ... = ... | local_dataflow.rb:15:1:17:3 | if ... |
| local_dataflow.rb:15:1:17:3 | <captured exit> x | local_dataflow.rb:19:1:21:3 | x |
| local_dataflow.rb:15:1:17:3 | <captured exit> x | local_dataflow.rb:19:5:19:5 | x |
| local_dataflow.rb:15:1:17:3 | __synth__0__1 | local_dataflow.rb:15:1:17:3 | ... = ... |
| local_dataflow.rb:15:1:17:3 | __synth__0__1 | local_dataflow.rb:15:1:17:3 | __synth__0__1 |
| local_dataflow.rb:15:1:17:3 | __synth__0__1 | local_dataflow.rb:15:1:17:3 | __synth__0__1 |
| local_dataflow.rb:15:1:17:3 | __synth__0__1 | local_dataflow.rb:15:5:15:5 | x |
| local_dataflow.rb:15:1:17:3 | call to each | local_dataflow.rb:15:1:17:3 | ... |
| local_dataflow.rb:15:1:17:3 | defined? ... | local_dataflow.rb:15:1:17:3 | [false] ! ... |
| local_dataflow.rb:15:1:17:3 | defined? ... | local_dataflow.rb:15:1:17:3 | [true] ! ... |
| local_dataflow.rb:15:1:17:3 | nil | local_dataflow.rb:15:1:17:3 | ... = ... |
| local_dataflow.rb:15:1:17:3 | nil | local_dataflow.rb:15:1:17:3 | x |
| local_dataflow.rb:15:1:17:3 | synthetic *args | local_dataflow.rb:15:1:17:3 | __synth__0__1 |
| local_dataflow.rb:15:1:17:3 | x | local_dataflow.rb:15:1:17:3 | defined? ... |
| local_dataflow.rb:15:1:17:3 | x | local_dataflow.rb:15:1:17:3 | phi |
| local_dataflow.rb:15:5:15:5 | ... = ... | local_dataflow.rb:15:5:15:5 | if ... |
| local_dataflow.rb:15:5:15:5 | defined? ... | local_dataflow.rb:15:5:15:5 | [false] ! ... |
| local_dataflow.rb:15:5:15:5 | defined? ... | local_dataflow.rb:15:5:15:5 | [true] ! ... |
| local_dataflow.rb:15:5:15:5 | nil | local_dataflow.rb:15:5:15:5 | ... = ... |
| local_dataflow.rb:15:5:15:5 | nil | local_dataflow.rb:15:5:15:5 | x |
| local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | defined? ... |
| local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | phi |
| local_dataflow.rb:15:10:15:14 | [post] array | local_dataflow.rb:19:10:19:14 | array |
| local_dataflow.rb:15:10:15:14 | array | local_dataflow.rb:19:10:19:14 | array |
| local_dataflow.rb:16:9:16:10 | 10 | local_dataflow.rb:16:3:16:10 | break |
| local_dataflow.rb:19:1:21:3 | ... = ... | local_dataflow.rb:19:1:21:3 | if ... |
| local_dataflow.rb:19:1:21:3 | __synth__0__1 | local_dataflow.rb:19:1:21:3 | ... = ... |
| local_dataflow.rb:19:1:21:3 | __synth__0__1 | local_dataflow.rb:19:1:21:3 | __synth__0__1 |
| local_dataflow.rb:19:1:21:3 | __synth__0__1 | local_dataflow.rb:19:1:21:3 | __synth__0__1 |
| local_dataflow.rb:19:1:21:3 | __synth__0__1 | local_dataflow.rb:19:5:19:5 | x |
| local_dataflow.rb:19:1:21:3 | call to each | local_dataflow.rb:19:1:21:3 | ... |
| local_dataflow.rb:19:1:21:3 | defined? ... | local_dataflow.rb:19:1:21:3 | [false] ! ... |
| local_dataflow.rb:19:1:21:3 | defined? ... | local_dataflow.rb:19:1:21:3 | [true] ! ... |
| local_dataflow.rb:19:1:21:3 | nil | local_dataflow.rb:19:1:21:3 | ... = ... |
| local_dataflow.rb:19:1:21:3 | nil | local_dataflow.rb:19:1:21:3 | x |
| local_dataflow.rb:19:1:21:3 | synthetic *args | local_dataflow.rb:19:1:21:3 | __synth__0__1 |
| local_dataflow.rb:19:1:21:3 | x | local_dataflow.rb:19:1:21:3 | defined? ... |
| local_dataflow.rb:19:1:21:3 | x | local_dataflow.rb:19:1:21:3 | phi |
| local_dataflow.rb:19:5:19:5 | ... = ... | local_dataflow.rb:19:5:19:5 | if ... |
| local_dataflow.rb:19:5:19:5 | defined? ... | local_dataflow.rb:19:5:19:5 | [false] ! ... |
| local_dataflow.rb:19:5:19:5 | defined? ... | local_dataflow.rb:19:5:19:5 | [true] ! ... |
| local_dataflow.rb:19:5:19:5 | nil | local_dataflow.rb:19:5:19:5 | ... = ... |
| local_dataflow.rb:19:5:19:5 | nil | local_dataflow.rb:19:5:19:5 | x |
| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | defined? ... |
| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | phi |
| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:20:6:20:6 | x |
| local_dataflow.rb:20:6:20:6 | x | local_dataflow.rb:20:6:20:10 | ... > ... |
| local_dataflow.rb:20:10:20:10 | 1 | local_dataflow.rb:20:6:20:10 | ... > ... |

View File

@@ -127,9 +127,9 @@ definition
| ssa.rb:26:3:28:5 | <captured entry> self | ssa.rb:25:1:30:3 | self |
| ssa.rb:26:3:28:5 | <captured exit> elem | ssa.rb:26:7:26:10 | elem |
| ssa.rb:26:3:28:5 | __synth__0__1 | ssa.rb:26:3:28:5 | __synth__0__1 |
| ssa.rb:26:3:28:5 | elem | ssa.rb:26:7:26:10 | elem |
| ssa.rb:26:3:28:5 | phi | ssa.rb:26:7:26:10 | elem |
| ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | elem |
| ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | elem |
| ssa.rb:26:7:26:10 | phi | ssa.rb:26:7:26:10 | elem |
| ssa.rb:32:1:36:3 | self (m3) | ssa.rb:32:1:36:3 | self |
| ssa.rb:33:16:35:5 | <captured entry> self | ssa.rb:32:1:36:3 | self |
| ssa.rb:33:20:33:20 | x | ssa.rb:33:20:33:20 | x |
@@ -318,7 +318,7 @@ read
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:19:9:19:9 | x |
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:20:10:20:10 | x |
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:21:5:21:5 | x |
| ssa.rb:25:1:30:3 | <uninitialized> | ssa.rb:26:7:26:10 | elem | ssa.rb:26:3:28:5 | elem |
| ssa.rb:25:1:30:3 | <uninitialized> | ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | elem |
| ssa.rb:25:1:30:3 | self (m2) | ssa.rb:25:1:30:3 | self | ssa.rb:29:3:29:11 | self |
| ssa.rb:25:8:25:15 | elements | ssa.rb:25:8:25:15 | elements | ssa.rb:26:15:26:22 | elements |
| ssa.rb:26:3:28:5 | <captured entry> self | ssa.rb:25:1:30:3 | self | ssa.rb:27:5:27:13 | self |
@@ -473,7 +473,7 @@ firstRead
| ssa.rb:10:5:10:5 | i | ssa.rb:2:3:2:3 | i | ssa.rb:11:10:11:10 | i |
| ssa.rb:18:1:23:3 | self (m1) | ssa.rb:18:1:23:3 | self | ssa.rb:20:5:20:10 | self |
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:19:9:19:9 | x |
| ssa.rb:25:1:30:3 | <uninitialized> | ssa.rb:26:7:26:10 | elem | ssa.rb:26:3:28:5 | elem |
| ssa.rb:25:1:30:3 | <uninitialized> | ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | elem |
| ssa.rb:25:1:30:3 | self (m2) | ssa.rb:25:1:30:3 | self | ssa.rb:29:3:29:11 | self |
| ssa.rb:25:8:25:15 | elements | ssa.rb:25:8:25:15 | elements | ssa.rb:26:15:26:22 | elements |
| ssa.rb:26:3:28:5 | <captured entry> self | ssa.rb:25:1:30:3 | self | ssa.rb:27:5:27:13 | self |
@@ -625,7 +625,7 @@ lastRead
| ssa.rb:18:1:23:3 | self (m1) | ssa.rb:18:1:23:3 | self | ssa.rb:20:5:20:10 | self |
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:19:9:19:9 | x |
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:21:5:21:5 | x |
| ssa.rb:25:1:30:3 | <uninitialized> | ssa.rb:26:7:26:10 | elem | ssa.rb:26:3:28:5 | elem |
| ssa.rb:25:1:30:3 | <uninitialized> | ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | elem |
| ssa.rb:25:1:30:3 | self (m2) | ssa.rb:25:1:30:3 | self | ssa.rb:29:3:29:11 | self |
| ssa.rb:25:8:25:15 | elements | ssa.rb:25:8:25:15 | elements | ssa.rb:26:15:26:22 | elements |
| ssa.rb:26:3:28:5 | <captured entry> self | ssa.rb:25:1:30:3 | self | ssa.rb:27:5:27:13 | self |
@@ -741,8 +741,8 @@ phi
| ssa.rb:5:3:13:5 | phi | ssa.rb:2:3:2:3 | i | ssa.rb:10:5:10:5 | i |
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:18:8:18:8 | x |
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:21:5:21:5 | x |
| ssa.rb:26:3:28:5 | phi | ssa.rb:26:7:26:10 | elem | ssa.rb:25:1:30:3 | <uninitialized> |
| ssa.rb:26:3:28:5 | phi | ssa.rb:26:7:26:10 | elem | ssa.rb:26:3:28:5 | elem |
| ssa.rb:26:7:26:10 | phi | ssa.rb:26:7:26:10 | elem | ssa.rb:25:1:30:3 | <uninitialized> |
| ssa.rb:26:7:26:10 | phi | ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | elem |
| ssa.rb:45:3:45:12 | phi | ssa.rb:45:3:45:3 | x | ssa.rb:44:1:47:3 | <uninitialized> |
| ssa.rb:45:3:45:12 | phi | ssa.rb:45:3:45:3 | x | ssa.rb:45:3:45:3 | x |
| ssa.rb:50:3:50:8 | phi | ssa.rb:49:14:49:14 | y | ssa.rb:49:1:51:3 | <uninitialized> |

View File

@@ -225,8 +225,8 @@ variableAccess
| ssa.rb:21:5:21:5 | x | ssa.rb:18:8:18:8 | x | ssa.rb:18:1:23:3 | m1 |
| ssa.rb:21:5:21:5 | x | ssa.rb:18:8:18:8 | x | ssa.rb:18:1:23:3 | m1 |
| ssa.rb:25:8:25:15 | elements | ssa.rb:25:8:25:15 | elements | ssa.rb:25:1:30:3 | m2 |
| ssa.rb:26:3:28:5 | elem | ssa.rb:26:7:26:10 | elem | ssa.rb:25:1:30:3 | m2 |
| ssa.rb:26:3:28:5 | elem | ssa.rb:26:7:26:10 | elem | ssa.rb:25:1:30:3 | m2 |
| ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | elem | ssa.rb:25:1:30:3 | m2 |
| ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | elem | ssa.rb:25:1:30:3 | m2 |
| ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | elem | ssa.rb:25:1:30:3 | m2 |
| ssa.rb:26:15:26:22 | elements | ssa.rb:25:8:25:15 | elements | ssa.rb:25:1:30:3 | m2 |
| ssa.rb:27:5:27:13 | self | ssa.rb:25:1:30:3 | self | ssa.rb:25:1:30:3 | m2 |
@@ -355,8 +355,8 @@ explicitWrite
| ssa.rb:10:5:10:5 | i | ssa.rb:10:5:10:9 | ... = ... |
| ssa.rb:21:5:21:5 | x | ssa.rb:21:5:21:10 | ... -= ... |
| ssa.rb:21:5:21:5 | x | ssa.rb:21:5:21:10 | ... = ... |
| ssa.rb:26:3:28:5 | elem | ssa.rb:26:3:28:5 | ... = ... |
| ssa.rb:26:7:26:10 | elem | ssa.rb:26:3:28:5 | ... = ... |
| ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | ... = ... |
| ssa.rb:40:3:40:4 | m3 | ssa.rb:40:3:40:9 | ... = ... |
| ssa.rb:45:3:45:3 | x | ssa.rb:45:3:45:7 | ... = ... |
| ssa.rb:49:14:49:14 | y | ssa.rb:49:14:49:19 | ... = ... |
@@ -570,7 +570,7 @@ readAccess
| ssa.rb:20:10:20:10 | x |
| ssa.rb:21:5:21:5 | x |
| ssa.rb:26:3:28:5 | __synth__0__1 |
| ssa.rb:26:3:28:5 | elem |
| ssa.rb:26:7:26:10 | elem |
| ssa.rb:26:15:26:22 | elements |
| ssa.rb:27:5:27:13 | self |
| ssa.rb:27:10:27:13 | elem |