diff --git a/ruby/ql/lib/codeql/ruby/dataflow/SSA.qll b/ruby/ql/lib/codeql/ruby/dataflow/SSA.qll
index 23623e4d6178d..f21dadb7c5abe 100644
--- a/ruby/ql/lib/codeql/ruby/dataflow/SSA.qll
+++ b/ruby/ql/lib/codeql/ruby/dataflow/SSA.qll
@@ -176,9 +176,6 @@ module Ssa {
override string toString() { result = this.getControlFlowNode().toString() }
- /** Gets the location of this SSA definition. */
- Location getLocation() { result = this.getControlFlowNode().getLocation() }
-
/** Gets the scope of this SSA definition. */
CfgScope getScope() { result = this.getBasicBlock().getScope() }
}
diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll
index d4e25a303b182..d4320461b3ab2 100644
--- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll
+++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll
@@ -87,39 +87,37 @@ class SsaInputDefinitionExt extends SsaImpl::DefinitionExt {
/** Provides predicates related to local data flow. */
module LocalFlow {
- /**
- * Holds if `nodeFrom` is a node for SSA definition `def`, which can reach `next`.
- */
- pragma[nomagic]
- private predicate localFlowSsaInputFromDef(
- SsaDefinitionExtNode nodeFrom, SsaImpl::DefinitionExt def, SsaInputNode nodeTo
- ) {
- exists(BasicBlock bb, int i, BasicBlock input, SsaInputDefinitionExt next |
- next.hasInputFromBlock(def, bb, i, input) and
- def = nodeFrom.getDefinitionExt() and
- def.definesAt(_, bb, i, _) and
- nodeTo = TSsaInputNode(next, input)
- )
- }
-
- /**
- * Holds if `nodeFrom` is a last read of SSA definition `def`, which
- * can reach `nodeTo`.
- */
- pragma[nomagic]
- predicate localFlowSsaInputFromRead(SsaImpl::DefinitionExt def, Node nodeFrom, SsaInputNode nodeTo) {
- exists(
- BasicBlock bb, int i, CfgNodes::ExprCfgNode exprFrom, BasicBlock input,
- SsaInputDefinitionExt next
- |
- next.hasInputFromBlock(def, bb, i, input) and
- exprFrom = bb.getNode(i) and
- exprFrom.getExpr() instanceof VariableReadAccess and
- exprFrom = [nodeFrom.asExpr(), nodeFrom.(PostUpdateNodeImpl).getPreUpdateNode().asExpr()] and
- nodeTo = TSsaInputNode(next, input)
- )
- }
-
+ // /**
+ // * Holds if `nodeFrom` is a node for SSA definition `def`, which can reach `next`.
+ // */
+ // pragma[nomagic]
+ // private predicate localFlowSsaInputFromDef(
+ // SsaDefinitionExtNode nodeFrom, SsaImpl::DefinitionExt def, SsaInputNode nodeTo
+ // ) {
+ // exists(BasicBlock bb, int i, BasicBlock input, SsaInputDefinitionExt next |
+ // next.hasInputFromBlock(def, bb, i, input) and
+ // def = nodeFrom.getDefinitionExt() and
+ // def.definesAt(_, bb, i, _) and
+ // nodeTo = TSsaInputNode(next, input)
+ // )
+ // }
+ // /**
+ // * Holds if `nodeFrom` is a last read of SSA definition `def`, which
+ // * can reach `nodeTo`.
+ // */
+ // pragma[nomagic]
+ // predicate localFlowSsaInputFromRead(SsaImpl::DefinitionExt def, Node nodeFrom, SsaInputNode nodeTo) {
+ // exists(
+ // BasicBlock bb, int i, CfgNodes::ExprCfgNode exprFrom, BasicBlock input,
+ // SsaInputDefinitionExt next
+ // |
+ // next.hasInputFromBlock(def, bb, i, input) and
+ // exprFrom = bb.getNode(i) and
+ // exprFrom.getExpr() instanceof VariableReadAccess and
+ // exprFrom = [nodeFrom.asExpr(), nodeFrom.(PostUpdateNodeImpl).getPreUpdateNode().asExpr()] and
+ // nodeTo = TSsaInputNode(next, input)
+ // )
+ // }
/** Gets the SSA definition node corresponding to parameter `p`. */
pragma[nomagic]
SsaDefinitionExtNode getParameterDefNode(NamedParameter p) {
@@ -139,14 +137,13 @@ module LocalFlow {
nodeTo.getDefinitionExt() = nodeFrom.(SelfParameterNodeImpl).getSelfDefinition()
}
- /**
- * Holds if there is a local use-use flow step from `nodeFrom` to `nodeTo`
- * involving SSA definition `def`.
- */
- predicate localSsaFlowStepUseUse(SsaImpl::DefinitionExt def, Node nodeFrom, Node nodeTo) {
- SsaImpl::adjacentReadPairExt(def, nodeFrom.asExpr(), nodeTo.asExpr())
- }
-
+ // /**
+ // * Holds if there is a local use-use flow step from `nodeFrom` to `nodeTo`
+ // * involving SSA definition `def`.
+ // */
+ // predicate localSsaFlowStepUseUse(SsaImpl::DefinitionExt def, Node nodeFrom, Node nodeTo) {
+ // SsaImpl::adjacentReadPairExt(def, nodeFrom.asExpr(), nodeTo.asExpr())
+ // }
/**
* Holds if SSA definition `def` assigns `value` to the underlying variable.
*
@@ -173,33 +170,32 @@ module LocalFlow {
)
}
- /**
- * Holds if there is a local flow step from `nodeFrom` to `nodeTo` involving
- * SSA definition `def`.
- */
- pragma[nomagic]
- predicate localSsaFlowStep(SsaImpl::DefinitionExt def, Node nodeFrom, Node nodeTo) {
- // Flow from assignment into SSA definition
- ssaDefAssigns(def, nodeFrom.asExpr()) and
- nodeTo.(SsaDefinitionExtNode).getDefinitionExt() = def
- or
- // Flow from SSA definition to first read
- def = nodeFrom.(SsaDefinitionExtNode).getDefinitionExt() and
- SsaImpl::firstReadExt(def, nodeTo.asExpr())
- or
- // Flow from post-update read to next read
- localSsaFlowStepUseUse(def, nodeFrom.(PostUpdateNodeImpl).getPreUpdateNode(), nodeTo)
- or
- // Flow into phi (read) SSA definition node from def
- localFlowSsaInputFromDef(nodeFrom, def, nodeTo)
- or
- nodeTo.(SsaDefinitionExtNode).getDefinitionExt() = def and
- def = nodeFrom.(SsaInputNode).getDefinitionExt()
- or
- localFlowSsaParamInput(nodeFrom, nodeTo) and
- def = nodeTo.(SsaDefinitionExtNode).getDefinitionExt()
- }
-
+ // /**
+ // * Holds if there is a local flow step from `nodeFrom` to `nodeTo` involving
+ // * SSA definition `def`.
+ // */
+ // pragma[nomagic]
+ // predicate localSsaFlowStep(SsaImpl::DefinitionExt def, Node nodeFrom, Node nodeTo) {
+ // // // Flow from assignment into SSA definition
+ // // ssaDefAssigns(def, nodeFrom.asExpr()) and
+ // // nodeTo.(SsaDefinitionExtNode).getDefinitionExt() = def
+ // // or
+ // // // Flow from SSA definition to first read
+ // // def = nodeFrom.(SsaDefinitionExtNode).getDefinitionExt() and
+ // // SsaImpl::firstReadExt(def, nodeTo.asExpr())
+ // // or
+ // // // Flow from post-update read to next read
+ // // localSsaFlowStepUseUse(def, nodeFrom.(PostUpdateNodeImpl).getPreUpdateNode(), nodeTo)
+ // // or
+ // // // Flow into phi (read) SSA definition node from def
+ // // localFlowSsaInputFromDef(nodeFrom, def, nodeTo)
+ // // or
+ // // nodeTo.(SsaDefinitionExtNode).getDefinitionExt() = def and
+ // // def = nodeFrom.(SsaInputNode).getDefinitionExt()
+ // // or
+ // localFlowSsaParamInput(nodeFrom, nodeTo) and
+ // def = nodeTo.(SsaDefinitionExtNode).getDefinitionExt()
+ // }
pragma[nomagic]
predicate localFlowStepCommon(Node nodeFrom, Node nodeTo) {
nodeFrom.asExpr() = nodeTo.asExpr().(CfgNodes::ExprNodes::BlockArgumentCfgNode).getValue()
@@ -338,6 +334,70 @@ predicate isNonConstantExpr(CfgNodes::ExprCfgNode n) {
not n.getExpr() instanceof ConstantAccess
}
+private module SsaIntegration {
+ private module Input implements SsaImpl::Impl::DataFlowIntegrationInputSig {
+ private import ruby::Ast as R
+
+ class Expr extends CfgNodes::ExprCfgNode {
+ predicate hasCfgNode(SsaImpl::SsaInput::BasicBlock bb, int i) { this = bb.getNode(i) }
+
+ predicate hasPostUpdateNode() { this = any(ExprPostUpdateNode n).getPreUpdateNode().asExpr() }
+ }
+
+ /**
+ * Holds if SSA definition `def` assigns `value` to the underlying variable.
+ *
+ * This is either a direct assignment, `x = value`, or an assignment via
+ * simple pattern matching
+ *
+ * ```rb
+ * case value
+ * in Foo => x then ...
+ * in y => then ...
+ * end
+ * ```
+ */
+ predicate ssaDefAssigns(SsaImpl::WriteDefinition def, Expr value) {
+ def.(Ssa::WriteDefinition).assigns(value)
+ or
+ exists(CfgNodes::ExprNodes::CaseExprCfgNode case, CfgNodes::AstCfgNode pattern |
+ case.getValue() = value and
+ pattern = case.getBranch(_).(CfgNodes::ExprNodes::InClauseCfgNode).getPattern()
+ |
+ def.(Ssa::WriteDefinition).getWriteAccess() =
+ [pattern, pattern.(CfgNodes::ExprNodes::AsPatternCfgNode).getVariableAccess()]
+ )
+ }
+
+ class Parameter = ParameterNodeImpl;
+
+ predicate ssaDefInitializesParam(SsaImpl::WriteDefinition def, ParameterNodeImpl p) {
+ exists(BasicBlock bb, int i |
+ bb.getNode(i).getAstNode() = p.getParameter().(NamedParameter).getDefiningAccess() and
+ def.definesAt(_, bb, i)
+ )
+ or
+ def = p.(SelfParameterNodeImpl).getSelfDefinition()
+ }
+ }
+
+ module Impl = SsaImpl::Impl::DataFlowIntegration;
+
+ private Impl::Node asNode(Node n) {
+ result = n.(SsaNode).getSsaNode()
+ or
+ result.(Impl::ExprNode).getExpr() = n.asExpr()
+ or
+ result.(Impl::ExprPostUpdateNode).getExpr() = n.(PostUpdateNode).getPreUpdateNode().asExpr()
+ or
+ result.(Impl::ParameterNode).getParameter() = n
+ }
+
+ predicate localFlowStep(SsaImpl::DefinitionExt def, Node nodeFrom, Node nodeTo) {
+ Impl::localFlowStep(def, asNode(nodeFrom), asNode(nodeTo))
+ }
+}
+
/** Provides logic related to captured variables. */
module VariableCapture {
private import codeql.dataflow.VariableCapture as Shared
@@ -359,6 +419,8 @@ module VariableCapture {
class BasicBlock extends BasicBlocks::BasicBlock {
Callable getEnclosingCallable() { result = this.getScope() }
+
+ Location getLocation(int i) { result = this.getNode(i).getLocation() }
}
BasicBlock getImmediateBasicBlockDominator(BasicBlock bb) {
@@ -537,10 +599,11 @@ private module Cached {
newtype TNode =
TExprNode(CfgNodes::ExprCfgNode n) or
TReturningNode(CfgNodes::ReturningCfgNode n) { exists(n.getReturnedValueNode()) } or
- TSsaDefinitionExtNode(SsaImpl::DefinitionExt def) or
- TSsaInputNode(SsaInputDefinitionExt def, BasicBlock input) {
- def.hasInputFromBlock(_, _, _, input)
- } or
+ TSsaNode(SsaIntegration::Impl::SsaNode node) or
+ // TSsaDefinitionExtNode(SsaImpl::DefinitionExt def) or
+ // TSsaInputNode(SsaInputDefinitionExt def, BasicBlock input) {
+ // def.hasInputFromBlock(_, _, _, input)
+ // } or
TCapturedVariableNode(VariableCapture::CapturedVariable v) or
TNormalParameterNode(Parameter p) {
p instanceof SimpleParameter or
@@ -621,13 +684,16 @@ private module Cached {
// captured variables are handled by the shared `VariableCapture` library
not def instanceof VariableCapture::CapturedSsaDefinitionExt
|
- LocalFlow::localSsaFlowStep(def, nodeFrom, nodeTo)
- or
- LocalFlow::localSsaFlowStepUseUse(def, nodeFrom, nodeTo) and
- not FlowSummaryImpl::Private::Steps::prohibitsUseUseFlow(nodeFrom, _)
- or
- LocalFlow::localFlowSsaInputFromRead(def, nodeFrom, nodeTo) and
+ SsaIntegration::localFlowStep(def, nodeFrom, nodeTo) and
not FlowSummaryImpl::Private::Steps::prohibitsUseUseFlow(nodeFrom, _)
+ // // SsaIntegration::Impl::localFlowStep(def, nodeFrom, nodeTo)
+ // LocalFlow::localSsaFlowStep(def, nodeFrom, nodeTo)
+ // or
+ // LocalFlow::localSsaFlowStepUseUse(def, nodeFrom, nodeTo) and
+ // not FlowSummaryImpl::Private::Steps::prohibitsUseUseFlow(nodeFrom, _)
+ // or
+ // LocalFlow::localFlowSsaInputFromRead(def, nodeFrom, nodeTo) and
+ // not FlowSummaryImpl::Private::Steps::prohibitsUseUseFlow(nodeFrom, _)
)
or
VariableCapture::valueStep(nodeFrom, nodeTo)
@@ -642,10 +708,11 @@ private module Cached {
predicate localFlowStepImpl(Node nodeFrom, Node nodeTo) {
LocalFlow::localFlowStepCommon(nodeFrom, nodeTo)
or
- LocalFlow::localSsaFlowStep(_, nodeFrom, nodeTo)
- or
- LocalFlow::localSsaFlowStepUseUse(_, nodeFrom, nodeTo)
+ // LocalFlow::localSsaFlowStep(_, nodeFrom, nodeTo)
+ SsaIntegration::localFlowStep(_, nodeFrom, nodeTo)
or
+ // LocalFlow::localSsaFlowStepUseUse(_, nodeFrom, nodeTo)
+ // or
// Simple flow through library code is included in the exposed local
// step relation, even though flow is technically inter-procedural
FlowSummaryImpl::Private::Steps::summaryThroughStepValue(nodeFrom, nodeTo, _)
@@ -658,12 +725,13 @@ private module Cached {
predicate localFlowStepTypeTracker(Node nodeFrom, Node nodeTo) {
LocalFlow::localFlowStepCommon(nodeFrom, nodeTo)
or
- LocalFlow::localSsaFlowStep(_, nodeFrom, nodeTo)
- or
- LocalFlow::localSsaFlowStepUseUse(_, nodeFrom, nodeTo)
- or
- LocalFlow::localFlowSsaInputFromRead(_, nodeFrom, nodeTo)
+ SsaIntegration::localFlowStep(_, nodeFrom, nodeTo)
or
+ // LocalFlow::localSsaFlowStep(_, nodeFrom, nodeTo)
+ // or
+ // LocalFlow::localSsaFlowStepUseUse(_, nodeFrom, nodeTo)
+ // or
+ // LocalFlow::localFlowSsaInputFromRead(_, nodeFrom, nodeTo)
VariableCapture::flowInsensitiveStep(nodeFrom, nodeTo)
or
LocalFlow::flowSummaryLocalStep(nodeFrom, nodeTo, any(LibraryCallableToIncludeInTypeTracking c),
@@ -862,14 +930,28 @@ predicate nodeIsHidden(Node n) {
}
/** An SSA definition, viewed as a node in a data flow graph. */
-class SsaDefinitionExtNode extends NodeImpl, TSsaDefinitionExtNode {
+abstract class SsaNode extends NodeImpl, TSsaNode {
+ SsaIntegration::Impl::SsaNode node;
SsaImpl::DefinitionExt def;
- SsaDefinitionExtNode() { this = TSsaDefinitionExtNode(def) }
+ SsaNode() {
+ this = TSsaNode(node) and
+ def = node.getDefinitionExt()
+ }
+
+ SsaIntegration::Impl::SsaNode getSsaNode() { result = node }
- /** Gets the underlying SSA definition. */
SsaImpl::DefinitionExt getDefinitionExt() { result = def }
+ override Location getLocationImpl() { result = node.getLocation() }
+
+ override string toStringImpl() { result = node.toString() }
+}
+
+/** An SSA definition, viewed as a node in a data flow graph. */
+class SsaDefinitionExtNode extends SsaNode {
+ override SsaIntegration::Impl::SsaDefinitionExtNode node;
+
/** Gets the underlying variable. */
Variable getVariable() { result = def.getSourceVariable() }
@@ -881,10 +963,16 @@ class SsaDefinitionExtNode extends NodeImpl, TSsaDefinitionExtNode {
}
override CfgScope getCfgScope() { result = def.getBasicBlock().getScope() }
+}
+
+class SsaDefinitionNodeImpl extends SsaDefinitionExtNode {
+ Ssa::Definition ssaDef;
- override Location getLocationImpl() { result = def.getLocation() }
+ SsaDefinitionNodeImpl() { ssaDef = def }
- override string toStringImpl() { result = def.toString() }
+ override Location getLocationImpl() { result = ssaDef.getLocation() }
+
+ override string toStringImpl() { result = ssaDef.toString() }
}
/**
@@ -922,20 +1010,20 @@ class SsaDefinitionExtNode extends NodeImpl, TSsaDefinitionExtNode {
*
* both inputs into the phi read node after the outer condition are guarded.
*/
-class SsaInputNode extends NodeImpl, TSsaInputNode {
- SsaImpl::DefinitionExt def;
+class SsaInputNode extends SsaNode {
+ override SsaIntegration::Impl::SsaInputNode node;
BasicBlock input;
- SsaInputNode() { this = TSsaInputNode(def, input) }
+ SsaInputNode() { node.hasInputFromBlock(def, input) }
- /** Gets the underlying SSA definition. */
- SsaImpl::DefinitionExt getDefinitionExt() { result = def }
+ predicate isInputInto(BasicBlock bb, SsaImpl::DefinitionExt target) {
+ bb = input and
+ target = def
+ }
override CfgScope getCfgScope() { result = input.getScope() }
-
- override Location getLocationImpl() { result = input.getLastNode().getLocation() }
-
- override string toStringImpl() { result = "[input] " + def }
+ // override Location getLocationImpl() { result = input.getLastNode().getLocation() }
+ // override string toStringImpl() { result = "[input] " + def }
}
/** An SSA definition for a `self` variable. */
diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll
index d4e07e0653e10..62d6600f7f053 100644
--- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll
+++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll
@@ -360,16 +360,12 @@ class PostUpdateNode extends Node {
}
/** An SSA definition, viewed as a node in a data flow graph. */
-class SsaDefinitionNode extends Node instanceof SsaDefinitionExtNode {
- Ssa::Definition def;
-
- SsaDefinitionNode() { this = TSsaDefinitionExtNode(def) }
-
+class SsaDefinitionNode extends Node instanceof SsaDefinitionNodeImpl {
/** Gets the underlying SSA definition. */
- Ssa::Definition getDefinition() { result = def }
+ Ssa::Definition getDefinition() { result = super.getDefinitionExt() }
/** Gets the underlying variable. */
- Variable getVariable() { result = def.getSourceVariable() }
+ Variable getVariable() { result = this.getDefinition().getSourceVariable() }
}
cached
@@ -915,7 +911,7 @@ module BarrierGuard {
|
guardChecksSsaDef(g, branch, def) and
guardControlsPhiInput(g, branch, def, input, phi) and
- result = TSsaInputNode(phi, input)
+ result.(SsaInputNode).isInputInto(input, phi)
)
or
result.asExpr() = getAMaybeGuardedCapturedDef().getARead()
diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll
index 1490a8c7ca332..5b15db5c8074c 100644
--- a/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll
+++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll
@@ -6,16 +6,18 @@ private import codeql.ruby.dataflow.SSA
private import codeql.ruby.ast.Variable
private import Cfg::CfgNodes::ExprNodes
-private module SsaInput implements SsaImplCommon::InputSig {
+module SsaInput implements SsaImplCommon::InputSig {
private import codeql.ruby.controlflow.BasicBlocks as BasicBlocks
- class BasicBlock = BasicBlocks::BasicBlock;
+ class BasicBlock extends BasicBlocks::BasicBlock {
+ Location getLocation(int i) { result = this.getNode(i).getLocation() }
+ }
BasicBlock getImmediateBasicBlockDominator(BasicBlock bb) { result = bb.getImmediateDominator() }
BasicBlock getABasicBlockSuccessor(BasicBlock bb) { result = bb.getASuccessor() }
- class ExitBasicBlock = BasicBlocks::ExitBasicBlock;
+ class ExitBasicBlock extends BasicBlock, BasicBlocks::ExitBasicBlock { }
class SourceVariable = LocalVariable;
@@ -62,7 +64,7 @@ private module SsaInput implements SsaImplCommon::InputSig {
}
}
-private import SsaImplCommon::Make as Impl
+import SsaImplCommon::Make as Impl
class Definition = Impl::Definition;
@@ -494,8 +496,7 @@ class DefinitionExt extends Impl::DefinitionExt {
override string toString() { result = this.(Ssa::Definition).toString() }
- /** Gets the location of this definition. */
- Location getLocation() { result = this.(Ssa::Definition).getLocation() }
+ override Location getLocation() { result = this.(Ssa::Definition).getLocation() }
}
/**
@@ -506,5 +507,5 @@ class DefinitionExt extends Impl::DefinitionExt {
class PhiReadNode extends DefinitionExt, Impl::PhiReadNode {
override string toString() { result = "SSA phi read(" + this.getSourceVariable() + ")" }
- override Location getLocation() { result = this.getBasicBlock().getLocation() }
+ override Location getLocation() { result = Impl::PhiReadNode.super.getLocation() }
}
diff --git a/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected b/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected
index 904e48d397c83..f005299c0b70c 100644
--- a/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected
+++ b/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected
@@ -1392,7 +1392,9 @@
| UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(self) | UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2081:20:2116 | if ... | UseUseExplosion.rb:20:2076:20:2116 | then ... |
+| UseUseExplosion.rb:20:2085:20:2089 | [post] self | UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2085:20:2089 | [post] self | UseUseExplosion.rb:20:2107:20:2112 | self |
+| UseUseExplosion.rb:20:2085:20:2089 | self | UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2085:20:2089 | self | UseUseExplosion.rb:20:2107:20:2112 | self |
| UseUseExplosion.rb:20:2085:20:2093 | ... > ... | UseUseExplosion.rb:20:2084:20:2094 | [false] ( ... ) |
| UseUseExplosion.rb:20:2085:20:2093 | ... > ... | UseUseExplosion.rb:20:2084:20:2094 | [true] ( ... ) |
@@ -1402,403 +1404,703 @@
| UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(self) |
| UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) |
| UseUseExplosion.rb:20:2102:20:2112 | else ... | UseUseExplosion.rb:20:2081:20:2116 | if ... |
+| UseUseExplosion.rb:20:2107:20:2112 | [post] self | UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2107:20:2112 | call to use | UseUseExplosion.rb:20:2102:20:2112 | else ... |
+| UseUseExplosion.rb:20:2107:20:2112 | self | UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2111:20:2111 | x | UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) |
| UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) |
| UseUseExplosion.rb:20:2118:20:2128 | else ... | UseUseExplosion.rb:20:2061:20:2132 | if ... |
+| UseUseExplosion.rb:20:2123:20:2128 | [post] self | UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2123:20:2128 | call to use | UseUseExplosion.rb:20:2118:20:2128 | else ... |
+| UseUseExplosion.rb:20:2123:20:2128 | self | UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2127:20:2127 | x | UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) |
| UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) |
| UseUseExplosion.rb:20:2134:20:2144 | else ... | UseUseExplosion.rb:20:2041:20:2148 | if ... |
+| UseUseExplosion.rb:20:2139:20:2144 | [post] self | UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2139:20:2144 | call to use | UseUseExplosion.rb:20:2134:20:2144 | else ... |
+| UseUseExplosion.rb:20:2139:20:2144 | self | UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2143:20:2143 | x | UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) |
| UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) |
| UseUseExplosion.rb:20:2150:20:2160 | else ... | UseUseExplosion.rb:20:2021:20:2164 | if ... |
+| UseUseExplosion.rb:20:2155:20:2160 | [post] self | UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2155:20:2160 | call to use | UseUseExplosion.rb:20:2150:20:2160 | else ... |
+| UseUseExplosion.rb:20:2155:20:2160 | self | UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2159:20:2159 | x | UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) |
| UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) |
| UseUseExplosion.rb:20:2166:20:2176 | else ... | UseUseExplosion.rb:20:2001:20:2180 | if ... |
+| UseUseExplosion.rb:20:2171:20:2176 | [post] self | UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2171:20:2176 | call to use | UseUseExplosion.rb:20:2166:20:2176 | else ... |
+| UseUseExplosion.rb:20:2171:20:2176 | self | UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2175:20:2175 | x | UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) |
| UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) |
| UseUseExplosion.rb:20:2182:20:2192 | else ... | UseUseExplosion.rb:20:1981:20:2196 | if ... |
+| UseUseExplosion.rb:20:2187:20:2192 | [post] self | UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2187:20:2192 | call to use | UseUseExplosion.rb:20:2182:20:2192 | else ... |
+| UseUseExplosion.rb:20:2187:20:2192 | self | UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2191:20:2191 | x | UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) |
| UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) |
| UseUseExplosion.rb:20:2198:20:2208 | else ... | UseUseExplosion.rb:20:1961:20:2212 | if ... |
+| UseUseExplosion.rb:20:2203:20:2208 | [post] self | UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2203:20:2208 | call to use | UseUseExplosion.rb:20:2198:20:2208 | else ... |
+| UseUseExplosion.rb:20:2203:20:2208 | self | UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2207:20:2207 | x | UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) |
| UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) |
| UseUseExplosion.rb:20:2214:20:2224 | else ... | UseUseExplosion.rb:20:1941:20:2228 | if ... |
+| UseUseExplosion.rb:20:2219:20:2224 | [post] self | UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2219:20:2224 | call to use | UseUseExplosion.rb:20:2214:20:2224 | else ... |
+| UseUseExplosion.rb:20:2219:20:2224 | self | UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2223:20:2223 | x | UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) |
| UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) |
| UseUseExplosion.rb:20:2230:20:2240 | else ... | UseUseExplosion.rb:20:1921:20:2244 | if ... |
+| UseUseExplosion.rb:20:2235:20:2240 | [post] self | UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2235:20:2240 | call to use | UseUseExplosion.rb:20:2230:20:2240 | else ... |
+| UseUseExplosion.rb:20:2235:20:2240 | self | UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2239:20:2239 | x | UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) |
| UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) |
| UseUseExplosion.rb:20:2246:20:2256 | else ... | UseUseExplosion.rb:20:1900:20:2260 | if ... |
+| UseUseExplosion.rb:20:2251:20:2256 | [post] self | UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2251:20:2256 | call to use | UseUseExplosion.rb:20:2246:20:2256 | else ... |
+| UseUseExplosion.rb:20:2251:20:2256 | self | UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2255:20:2255 | x | UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) |
| UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) |
| UseUseExplosion.rb:20:2262:20:2272 | else ... | UseUseExplosion.rb:20:1879:20:2276 | if ... |
+| UseUseExplosion.rb:20:2267:20:2272 | [post] self | UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2267:20:2272 | call to use | UseUseExplosion.rb:20:2262:20:2272 | else ... |
+| UseUseExplosion.rb:20:2267:20:2272 | self | UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2271:20:2271 | x | UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) |
| UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) |
| UseUseExplosion.rb:20:2278:20:2288 | else ... | UseUseExplosion.rb:20:1858:20:2292 | if ... |
+| UseUseExplosion.rb:20:2283:20:2288 | [post] self | UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2283:20:2288 | call to use | UseUseExplosion.rb:20:2278:20:2288 | else ... |
+| UseUseExplosion.rb:20:2283:20:2288 | self | UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2287:20:2287 | x | UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) |
| UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) |
| UseUseExplosion.rb:20:2294:20:2304 | else ... | UseUseExplosion.rb:20:1837:20:2308 | if ... |
+| UseUseExplosion.rb:20:2299:20:2304 | [post] self | UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2299:20:2304 | call to use | UseUseExplosion.rb:20:2294:20:2304 | else ... |
+| UseUseExplosion.rb:20:2299:20:2304 | self | UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2303:20:2303 | x | UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) |
| UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) |
| UseUseExplosion.rb:20:2310:20:2320 | else ... | UseUseExplosion.rb:20:1816:20:2324 | if ... |
+| UseUseExplosion.rb:20:2315:20:2320 | [post] self | UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2315:20:2320 | call to use | UseUseExplosion.rb:20:2310:20:2320 | else ... |
+| UseUseExplosion.rb:20:2315:20:2320 | self | UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2319:20:2319 | x | UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) |
| UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) |
| UseUseExplosion.rb:20:2326:20:2336 | else ... | UseUseExplosion.rb:20:1795:20:2340 | if ... |
+| UseUseExplosion.rb:20:2331:20:2336 | [post] self | UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2331:20:2336 | call to use | UseUseExplosion.rb:20:2326:20:2336 | else ... |
+| UseUseExplosion.rb:20:2331:20:2336 | self | UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2335:20:2335 | x | UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) |
| UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) |
| UseUseExplosion.rb:20:2342:20:2352 | else ... | UseUseExplosion.rb:20:1774:20:2356 | if ... |
+| UseUseExplosion.rb:20:2347:20:2352 | [post] self | UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2347:20:2352 | call to use | UseUseExplosion.rb:20:2342:20:2352 | else ... |
+| UseUseExplosion.rb:20:2347:20:2352 | self | UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2351:20:2351 | x | UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) |
| UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) |
| UseUseExplosion.rb:20:2358:20:2368 | else ... | UseUseExplosion.rb:20:1753:20:2372 | if ... |
+| UseUseExplosion.rb:20:2363:20:2368 | [post] self | UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2363:20:2368 | call to use | UseUseExplosion.rb:20:2358:20:2368 | else ... |
+| UseUseExplosion.rb:20:2363:20:2368 | self | UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2367:20:2367 | x | UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) |
| UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) |
| UseUseExplosion.rb:20:2374:20:2384 | else ... | UseUseExplosion.rb:20:1732:20:2388 | if ... |
+| UseUseExplosion.rb:20:2379:20:2384 | [post] self | UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2379:20:2384 | call to use | UseUseExplosion.rb:20:2374:20:2384 | else ... |
+| UseUseExplosion.rb:20:2379:20:2384 | self | UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2383:20:2383 | x | UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) |
| UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) |
| UseUseExplosion.rb:20:2390:20:2400 | else ... | UseUseExplosion.rb:20:1711:20:2404 | if ... |
+| UseUseExplosion.rb:20:2395:20:2400 | [post] self | UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2395:20:2400 | call to use | UseUseExplosion.rb:20:2390:20:2400 | else ... |
+| UseUseExplosion.rb:20:2395:20:2400 | self | UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2399:20:2399 | x | UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) |
| UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) |
| UseUseExplosion.rb:20:2406:20:2416 | else ... | UseUseExplosion.rb:20:1690:20:2420 | if ... |
+| UseUseExplosion.rb:20:2411:20:2416 | [post] self | UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2411:20:2416 | call to use | UseUseExplosion.rb:20:2406:20:2416 | else ... |
+| UseUseExplosion.rb:20:2411:20:2416 | self | UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2415:20:2415 | x | UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) |
| UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) |
| UseUseExplosion.rb:20:2422:20:2432 | else ... | UseUseExplosion.rb:20:1669:20:2436 | if ... |
+| UseUseExplosion.rb:20:2427:20:2432 | [post] self | UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2427:20:2432 | call to use | UseUseExplosion.rb:20:2422:20:2432 | else ... |
+| UseUseExplosion.rb:20:2427:20:2432 | self | UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2431:20:2431 | x | UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) |
| UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) |
| UseUseExplosion.rb:20:2438:20:2448 | else ... | UseUseExplosion.rb:20:1648:20:2452 | if ... |
+| UseUseExplosion.rb:20:2443:20:2448 | [post] self | UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2443:20:2448 | call to use | UseUseExplosion.rb:20:2438:20:2448 | else ... |
+| UseUseExplosion.rb:20:2443:20:2448 | self | UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2447:20:2447 | x | UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) |
| UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) |
| UseUseExplosion.rb:20:2454:20:2464 | else ... | UseUseExplosion.rb:20:1627:20:2468 | if ... |
+| UseUseExplosion.rb:20:2459:20:2464 | [post] self | UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2459:20:2464 | call to use | UseUseExplosion.rb:20:2454:20:2464 | else ... |
+| UseUseExplosion.rb:20:2459:20:2464 | self | UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2463:20:2463 | x | UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) |
| UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) |
| UseUseExplosion.rb:20:2470:20:2480 | else ... | UseUseExplosion.rb:20:1606:20:2484 | if ... |
+| UseUseExplosion.rb:20:2475:20:2480 | [post] self | UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2475:20:2480 | call to use | UseUseExplosion.rb:20:2470:20:2480 | else ... |
+| UseUseExplosion.rb:20:2475:20:2480 | self | UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2479:20:2479 | x | UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) |
| UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) |
| UseUseExplosion.rb:20:2486:20:2496 | else ... | UseUseExplosion.rb:20:1585:20:2500 | if ... |
+| UseUseExplosion.rb:20:2491:20:2496 | [post] self | UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2491:20:2496 | call to use | UseUseExplosion.rb:20:2486:20:2496 | else ... |
+| UseUseExplosion.rb:20:2491:20:2496 | self | UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2495:20:2495 | x | UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) |
| UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) |
| UseUseExplosion.rb:20:2502:20:2512 | else ... | UseUseExplosion.rb:20:1564:20:2516 | if ... |
+| UseUseExplosion.rb:20:2507:20:2512 | [post] self | UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2507:20:2512 | call to use | UseUseExplosion.rb:20:2502:20:2512 | else ... |
+| UseUseExplosion.rb:20:2507:20:2512 | self | UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2511:20:2511 | x | UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) |
| UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) |
| UseUseExplosion.rb:20:2518:20:2528 | else ... | UseUseExplosion.rb:20:1543:20:2532 | if ... |
+| UseUseExplosion.rb:20:2523:20:2528 | [post] self | UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2523:20:2528 | call to use | UseUseExplosion.rb:20:2518:20:2528 | else ... |
+| UseUseExplosion.rb:20:2523:20:2528 | self | UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2527:20:2527 | x | UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) |
| UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) |
| UseUseExplosion.rb:20:2534:20:2544 | else ... | UseUseExplosion.rb:20:1522:20:2548 | if ... |
+| UseUseExplosion.rb:20:2539:20:2544 | [post] self | UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2539:20:2544 | call to use | UseUseExplosion.rb:20:2534:20:2544 | else ... |
+| UseUseExplosion.rb:20:2539:20:2544 | self | UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2543:20:2543 | x | UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) |
| UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) |
| UseUseExplosion.rb:20:2550:20:2560 | else ... | UseUseExplosion.rb:20:1501:20:2564 | if ... |
+| UseUseExplosion.rb:20:2555:20:2560 | [post] self | UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2555:20:2560 | call to use | UseUseExplosion.rb:20:2550:20:2560 | else ... |
+| UseUseExplosion.rb:20:2555:20:2560 | self | UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2559:20:2559 | x | UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) |
| UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) |
| UseUseExplosion.rb:20:2566:20:2576 | else ... | UseUseExplosion.rb:20:1480:20:2580 | if ... |
+| UseUseExplosion.rb:20:2571:20:2576 | [post] self | UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2571:20:2576 | call to use | UseUseExplosion.rb:20:2566:20:2576 | else ... |
+| UseUseExplosion.rb:20:2571:20:2576 | self | UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2575:20:2575 | x | UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) |
| UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) |
| UseUseExplosion.rb:20:2582:20:2592 | else ... | UseUseExplosion.rb:20:1459:20:2596 | if ... |
+| UseUseExplosion.rb:20:2587:20:2592 | [post] self | UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2587:20:2592 | call to use | UseUseExplosion.rb:20:2582:20:2592 | else ... |
+| UseUseExplosion.rb:20:2587:20:2592 | self | UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2591:20:2591 | x | UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) |
| UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) |
| UseUseExplosion.rb:20:2598:20:2608 | else ... | UseUseExplosion.rb:20:1438:20:2612 | if ... |
+| UseUseExplosion.rb:20:2603:20:2608 | [post] self | UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2603:20:2608 | call to use | UseUseExplosion.rb:20:2598:20:2608 | else ... |
+| UseUseExplosion.rb:20:2603:20:2608 | self | UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2607:20:2607 | x | UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) |
| UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) |
| UseUseExplosion.rb:20:2614:20:2624 | else ... | UseUseExplosion.rb:20:1417:20:2628 | if ... |
+| UseUseExplosion.rb:20:2619:20:2624 | [post] self | UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2619:20:2624 | call to use | UseUseExplosion.rb:20:2614:20:2624 | else ... |
+| UseUseExplosion.rb:20:2619:20:2624 | self | UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2623:20:2623 | x | UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) |
| UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) |
| UseUseExplosion.rb:20:2630:20:2640 | else ... | UseUseExplosion.rb:20:1396:20:2644 | if ... |
+| UseUseExplosion.rb:20:2635:20:2640 | [post] self | UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2635:20:2640 | call to use | UseUseExplosion.rb:20:2630:20:2640 | else ... |
+| UseUseExplosion.rb:20:2635:20:2640 | self | UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2639:20:2639 | x | UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) |
| UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) |
| UseUseExplosion.rb:20:2646:20:2656 | else ... | UseUseExplosion.rb:20:1375:20:2660 | if ... |
+| UseUseExplosion.rb:20:2651:20:2656 | [post] self | UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2651:20:2656 | call to use | UseUseExplosion.rb:20:2646:20:2656 | else ... |
+| UseUseExplosion.rb:20:2651:20:2656 | self | UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2655:20:2655 | x | UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) |
| UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) |
| UseUseExplosion.rb:20:2662:20:2672 | else ... | UseUseExplosion.rb:20:1354:20:2676 | if ... |
+| UseUseExplosion.rb:20:2667:20:2672 | [post] self | UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2667:20:2672 | call to use | UseUseExplosion.rb:20:2662:20:2672 | else ... |
+| UseUseExplosion.rb:20:2667:20:2672 | self | UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2671:20:2671 | x | UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) |
| UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) |
| UseUseExplosion.rb:20:2678:20:2688 | else ... | UseUseExplosion.rb:20:1333:20:2692 | if ... |
+| UseUseExplosion.rb:20:2683:20:2688 | [post] self | UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2683:20:2688 | call to use | UseUseExplosion.rb:20:2678:20:2688 | else ... |
+| UseUseExplosion.rb:20:2683:20:2688 | self | UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2687:20:2687 | x | UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) |
| UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) |
| UseUseExplosion.rb:20:2694:20:2704 | else ... | UseUseExplosion.rb:20:1312:20:2708 | if ... |
+| UseUseExplosion.rb:20:2699:20:2704 | [post] self | UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2699:20:2704 | call to use | UseUseExplosion.rb:20:2694:20:2704 | else ... |
+| UseUseExplosion.rb:20:2699:20:2704 | self | UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2703:20:2703 | x | UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) |
| UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) |
| UseUseExplosion.rb:20:2710:20:2720 | else ... | UseUseExplosion.rb:20:1291:20:2724 | if ... |
+| UseUseExplosion.rb:20:2715:20:2720 | [post] self | UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2715:20:2720 | call to use | UseUseExplosion.rb:20:2710:20:2720 | else ... |
+| UseUseExplosion.rb:20:2715:20:2720 | self | UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2719:20:2719 | x | UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) |
| UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) |
| UseUseExplosion.rb:20:2726:20:2736 | else ... | UseUseExplosion.rb:20:1270:20:2740 | if ... |
+| UseUseExplosion.rb:20:2731:20:2736 | [post] self | UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2731:20:2736 | call to use | UseUseExplosion.rb:20:2726:20:2736 | else ... |
+| UseUseExplosion.rb:20:2731:20:2736 | self | UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2735:20:2735 | x | UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) |
| UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) |
| UseUseExplosion.rb:20:2742:20:2752 | else ... | UseUseExplosion.rb:20:1249:20:2756 | if ... |
+| UseUseExplosion.rb:20:2747:20:2752 | [post] self | UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2747:20:2752 | call to use | UseUseExplosion.rb:20:2742:20:2752 | else ... |
+| UseUseExplosion.rb:20:2747:20:2752 | self | UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2751:20:2751 | x | UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) |
| UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) |
| UseUseExplosion.rb:20:2758:20:2768 | else ... | UseUseExplosion.rb:20:1228:20:2772 | if ... |
+| UseUseExplosion.rb:20:2763:20:2768 | [post] self | UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2763:20:2768 | call to use | UseUseExplosion.rb:20:2758:20:2768 | else ... |
+| UseUseExplosion.rb:20:2763:20:2768 | self | UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2767:20:2767 | x | UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) |
| UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) |
| UseUseExplosion.rb:20:2774:20:2784 | else ... | UseUseExplosion.rb:20:1207:20:2788 | if ... |
+| UseUseExplosion.rb:20:2779:20:2784 | [post] self | UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2779:20:2784 | call to use | UseUseExplosion.rb:20:2774:20:2784 | else ... |
+| UseUseExplosion.rb:20:2779:20:2784 | self | UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2783:20:2783 | x | UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) |
| UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) |
| UseUseExplosion.rb:20:2790:20:2800 | else ... | UseUseExplosion.rb:20:1186:20:2804 | if ... |
+| UseUseExplosion.rb:20:2795:20:2800 | [post] self | UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2795:20:2800 | call to use | UseUseExplosion.rb:20:2790:20:2800 | else ... |
+| UseUseExplosion.rb:20:2795:20:2800 | self | UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2799:20:2799 | x | UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) |
| UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) |
| UseUseExplosion.rb:20:2806:20:2816 | else ... | UseUseExplosion.rb:20:1165:20:2820 | if ... |
+| UseUseExplosion.rb:20:2811:20:2816 | [post] self | UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2811:20:2816 | call to use | UseUseExplosion.rb:20:2806:20:2816 | else ... |
+| UseUseExplosion.rb:20:2811:20:2816 | self | UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2815:20:2815 | x | UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) |
| UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) |
| UseUseExplosion.rb:20:2822:20:2832 | else ... | UseUseExplosion.rb:20:1144:20:2836 | if ... |
+| UseUseExplosion.rb:20:2827:20:2832 | [post] self | UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2827:20:2832 | call to use | UseUseExplosion.rb:20:2822:20:2832 | else ... |
+| UseUseExplosion.rb:20:2827:20:2832 | self | UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2831:20:2831 | x | UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) |
| UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) |
| UseUseExplosion.rb:20:2838:20:2848 | else ... | UseUseExplosion.rb:20:1123:20:2852 | if ... |
+| UseUseExplosion.rb:20:2843:20:2848 | [post] self | UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2843:20:2848 | call to use | UseUseExplosion.rb:20:2838:20:2848 | else ... |
+| UseUseExplosion.rb:20:2843:20:2848 | self | UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2847:20:2847 | x | UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) |
| UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) |
| UseUseExplosion.rb:20:2854:20:2864 | else ... | UseUseExplosion.rb:20:1102:20:2868 | if ... |
+| UseUseExplosion.rb:20:2859:20:2864 | [post] self | UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2859:20:2864 | call to use | UseUseExplosion.rb:20:2854:20:2864 | else ... |
+| UseUseExplosion.rb:20:2859:20:2864 | self | UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2863:20:2863 | x | UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) |
| UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) |
| UseUseExplosion.rb:20:2870:20:2880 | else ... | UseUseExplosion.rb:20:1081:20:2884 | if ... |
+| UseUseExplosion.rb:20:2875:20:2880 | [post] self | UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2875:20:2880 | call to use | UseUseExplosion.rb:20:2870:20:2880 | else ... |
+| UseUseExplosion.rb:20:2875:20:2880 | self | UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2879:20:2879 | x | UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) |
| UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) |
| UseUseExplosion.rb:20:2886:20:2896 | else ... | UseUseExplosion.rb:20:1060:20:2900 | if ... |
+| UseUseExplosion.rb:20:2891:20:2896 | [post] self | UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2891:20:2896 | call to use | UseUseExplosion.rb:20:2886:20:2896 | else ... |
+| UseUseExplosion.rb:20:2891:20:2896 | self | UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2895:20:2895 | x | UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) |
| UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) |
| UseUseExplosion.rb:20:2902:20:2912 | else ... | UseUseExplosion.rb:20:1039:20:2916 | if ... |
+| UseUseExplosion.rb:20:2907:20:2912 | [post] self | UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2907:20:2912 | call to use | UseUseExplosion.rb:20:2902:20:2912 | else ... |
+| UseUseExplosion.rb:20:2907:20:2912 | self | UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2911:20:2911 | x | UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) |
| UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) |
| UseUseExplosion.rb:20:2918:20:2928 | else ... | UseUseExplosion.rb:20:1018:20:2932 | if ... |
+| UseUseExplosion.rb:20:2923:20:2928 | [post] self | UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2923:20:2928 | call to use | UseUseExplosion.rb:20:2918:20:2928 | else ... |
+| UseUseExplosion.rb:20:2923:20:2928 | self | UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2927:20:2927 | x | UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(self) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) |
| UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(x) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) |
| UseUseExplosion.rb:20:2934:20:2944 | else ... | UseUseExplosion.rb:20:997:20:2948 | if ... |
+| UseUseExplosion.rb:20:2939:20:2944 | [post] self | UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2939:20:2944 | call to use | UseUseExplosion.rb:20:2934:20:2944 | else ... |
+| UseUseExplosion.rb:20:2939:20:2944 | self | UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2943:20:2943 | x | UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(self) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) |
| UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(x) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) |
| UseUseExplosion.rb:20:2950:20:2960 | else ... | UseUseExplosion.rb:20:976:20:2964 | if ... |
+| UseUseExplosion.rb:20:2955:20:2960 | [post] self | UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2955:20:2960 | call to use | UseUseExplosion.rb:20:2950:20:2960 | else ... |
+| UseUseExplosion.rb:20:2955:20:2960 | self | UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2959:20:2959 | x | UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(self) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) |
| UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(x) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) |
| UseUseExplosion.rb:20:2966:20:2976 | else ... | UseUseExplosion.rb:20:955:20:2980 | if ... |
+| UseUseExplosion.rb:20:2971:20:2976 | [post] self | UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2971:20:2976 | call to use | UseUseExplosion.rb:20:2966:20:2976 | else ... |
+| UseUseExplosion.rb:20:2971:20:2976 | self | UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2975:20:2975 | x | UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(self) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) |
| UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(x) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) |
| UseUseExplosion.rb:20:2982:20:2992 | else ... | UseUseExplosion.rb:20:934:20:2996 | if ... |
+| UseUseExplosion.rb:20:2987:20:2992 | [post] self | UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2987:20:2992 | call to use | UseUseExplosion.rb:20:2982:20:2992 | else ... |
+| UseUseExplosion.rb:20:2987:20:2992 | self | UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2991:20:2991 | x | UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(self) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) |
| UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(x) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) |
| UseUseExplosion.rb:20:2998:20:3008 | else ... | UseUseExplosion.rb:20:913:20:3012 | if ... |
+| UseUseExplosion.rb:20:3003:20:3008 | [post] self | UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3003:20:3008 | call to use | UseUseExplosion.rb:20:2998:20:3008 | else ... |
+| UseUseExplosion.rb:20:3003:20:3008 | self | UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3007:20:3007 | x | UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(self) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) |
| UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(x) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) |
| UseUseExplosion.rb:20:3014:20:3024 | else ... | UseUseExplosion.rb:20:892:20:3028 | if ... |
+| UseUseExplosion.rb:20:3019:20:3024 | [post] self | UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3019:20:3024 | call to use | UseUseExplosion.rb:20:3014:20:3024 | else ... |
+| UseUseExplosion.rb:20:3019:20:3024 | self | UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3023:20:3023 | x | UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(self) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) |
| UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(x) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) |
| UseUseExplosion.rb:20:3030:20:3040 | else ... | UseUseExplosion.rb:20:871:20:3044 | if ... |
+| UseUseExplosion.rb:20:3035:20:3040 | [post] self | UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3035:20:3040 | call to use | UseUseExplosion.rb:20:3030:20:3040 | else ... |
+| UseUseExplosion.rb:20:3035:20:3040 | self | UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3039:20:3039 | x | UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(self) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) |
| UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(x) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) |
| UseUseExplosion.rb:20:3046:20:3056 | else ... | UseUseExplosion.rb:20:850:20:3060 | if ... |
+| UseUseExplosion.rb:20:3051:20:3056 | [post] self | UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3051:20:3056 | call to use | UseUseExplosion.rb:20:3046:20:3056 | else ... |
+| UseUseExplosion.rb:20:3051:20:3056 | self | UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3055:20:3055 | x | UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(self) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) |
| UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(x) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) |
| UseUseExplosion.rb:20:3062:20:3072 | else ... | UseUseExplosion.rb:20:829:20:3076 | if ... |
+| UseUseExplosion.rb:20:3067:20:3072 | [post] self | UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3067:20:3072 | call to use | UseUseExplosion.rb:20:3062:20:3072 | else ... |
+| UseUseExplosion.rb:20:3067:20:3072 | self | UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3071:20:3071 | x | UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(self) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) |
| UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(x) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) |
| UseUseExplosion.rb:20:3078:20:3088 | else ... | UseUseExplosion.rb:20:808:20:3092 | if ... |
+| UseUseExplosion.rb:20:3083:20:3088 | [post] self | UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3083:20:3088 | call to use | UseUseExplosion.rb:20:3078:20:3088 | else ... |
+| UseUseExplosion.rb:20:3083:20:3088 | self | UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3087:20:3087 | x | UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(self) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) |
| UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(x) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) |
| UseUseExplosion.rb:20:3094:20:3104 | else ... | UseUseExplosion.rb:20:787:20:3108 | if ... |
+| UseUseExplosion.rb:20:3099:20:3104 | [post] self | UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3099:20:3104 | call to use | UseUseExplosion.rb:20:3094:20:3104 | else ... |
+| UseUseExplosion.rb:20:3099:20:3104 | self | UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3103:20:3103 | x | UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(self) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) |
| UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(x) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) |
| UseUseExplosion.rb:20:3110:20:3120 | else ... | UseUseExplosion.rb:20:766:20:3124 | if ... |
+| UseUseExplosion.rb:20:3115:20:3120 | [post] self | UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3115:20:3120 | call to use | UseUseExplosion.rb:20:3110:20:3120 | else ... |
+| UseUseExplosion.rb:20:3115:20:3120 | self | UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3119:20:3119 | x | UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(self) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) |
| UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(x) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) |
| UseUseExplosion.rb:20:3126:20:3136 | else ... | UseUseExplosion.rb:20:745:20:3140 | if ... |
+| UseUseExplosion.rb:20:3131:20:3136 | [post] self | UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3131:20:3136 | call to use | UseUseExplosion.rb:20:3126:20:3136 | else ... |
+| UseUseExplosion.rb:20:3131:20:3136 | self | UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3135:20:3135 | x | UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(self) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) |
| UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(x) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) |
| UseUseExplosion.rb:20:3142:20:3152 | else ... | UseUseExplosion.rb:20:724:20:3156 | if ... |
+| UseUseExplosion.rb:20:3147:20:3152 | [post] self | UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3147:20:3152 | call to use | UseUseExplosion.rb:20:3142:20:3152 | else ... |
+| UseUseExplosion.rb:20:3147:20:3152 | self | UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3151:20:3151 | x | UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(self) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) |
| UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(x) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) |
| UseUseExplosion.rb:20:3158:20:3168 | else ... | UseUseExplosion.rb:20:703:20:3172 | if ... |
+| UseUseExplosion.rb:20:3163:20:3168 | [post] self | UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3163:20:3168 | call to use | UseUseExplosion.rb:20:3158:20:3168 | else ... |
+| UseUseExplosion.rb:20:3163:20:3168 | self | UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3167:20:3167 | x | UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(self) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) |
| UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(x) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) |
| UseUseExplosion.rb:20:3174:20:3184 | else ... | UseUseExplosion.rb:20:682:20:3188 | if ... |
+| UseUseExplosion.rb:20:3179:20:3184 | [post] self | UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3179:20:3184 | call to use | UseUseExplosion.rb:20:3174:20:3184 | else ... |
+| UseUseExplosion.rb:20:3179:20:3184 | self | UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3183:20:3183 | x | UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(self) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) |
| UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(x) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) |
| UseUseExplosion.rb:20:3190:20:3200 | else ... | UseUseExplosion.rb:20:661:20:3204 | if ... |
+| UseUseExplosion.rb:20:3195:20:3200 | [post] self | UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3195:20:3200 | call to use | UseUseExplosion.rb:20:3190:20:3200 | else ... |
+| UseUseExplosion.rb:20:3195:20:3200 | self | UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3199:20:3199 | x | UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(self) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) |
| UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(x) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) |
| UseUseExplosion.rb:20:3206:20:3216 | else ... | UseUseExplosion.rb:20:640:20:3220 | if ... |
+| UseUseExplosion.rb:20:3211:20:3216 | [post] self | UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3211:20:3216 | call to use | UseUseExplosion.rb:20:3206:20:3216 | else ... |
+| UseUseExplosion.rb:20:3211:20:3216 | self | UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3215:20:3215 | x | UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(self) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) |
| UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(x) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) |
| UseUseExplosion.rb:20:3222:20:3232 | else ... | UseUseExplosion.rb:20:619:20:3236 | if ... |
+| UseUseExplosion.rb:20:3227:20:3232 | [post] self | UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3227:20:3232 | call to use | UseUseExplosion.rb:20:3222:20:3232 | else ... |
+| UseUseExplosion.rb:20:3227:20:3232 | self | UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3231:20:3231 | x | UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(self) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) |
| UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(x) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) |
| UseUseExplosion.rb:20:3238:20:3248 | else ... | UseUseExplosion.rb:20:598:20:3252 | if ... |
+| UseUseExplosion.rb:20:3243:20:3248 | [post] self | UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3243:20:3248 | call to use | UseUseExplosion.rb:20:3238:20:3248 | else ... |
+| UseUseExplosion.rb:20:3243:20:3248 | self | UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3247:20:3247 | x | UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(self) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) |
| UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(x) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) |
| UseUseExplosion.rb:20:3254:20:3264 | else ... | UseUseExplosion.rb:20:577:20:3268 | if ... |
+| UseUseExplosion.rb:20:3259:20:3264 | [post] self | UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3259:20:3264 | call to use | UseUseExplosion.rb:20:3254:20:3264 | else ... |
+| UseUseExplosion.rb:20:3259:20:3264 | self | UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3263:20:3263 | x | UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(self) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) |
| UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(x) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) |
| UseUseExplosion.rb:20:3270:20:3280 | else ... | UseUseExplosion.rb:20:556:20:3284 | if ... |
+| UseUseExplosion.rb:20:3275:20:3280 | [post] self | UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3275:20:3280 | call to use | UseUseExplosion.rb:20:3270:20:3280 | else ... |
+| UseUseExplosion.rb:20:3275:20:3280 | self | UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3279:20:3279 | x | UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(self) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) |
| UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(x) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) |
| UseUseExplosion.rb:20:3286:20:3296 | else ... | UseUseExplosion.rb:20:535:20:3300 | if ... |
+| UseUseExplosion.rb:20:3291:20:3296 | [post] self | UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3291:20:3296 | call to use | UseUseExplosion.rb:20:3286:20:3296 | else ... |
+| UseUseExplosion.rb:20:3291:20:3296 | self | UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3295:20:3295 | x | UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(self) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) |
| UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(x) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) |
| UseUseExplosion.rb:20:3302:20:3312 | else ... | UseUseExplosion.rb:20:514:20:3316 | if ... |
+| UseUseExplosion.rb:20:3307:20:3312 | [post] self | UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3307:20:3312 | call to use | UseUseExplosion.rb:20:3302:20:3312 | else ... |
+| UseUseExplosion.rb:20:3307:20:3312 | self | UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3311:20:3311 | x | UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(self) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) |
| UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(x) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) |
| UseUseExplosion.rb:20:3318:20:3328 | else ... | UseUseExplosion.rb:20:493:20:3332 | if ... |
+| UseUseExplosion.rb:20:3323:20:3328 | [post] self | UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3323:20:3328 | call to use | UseUseExplosion.rb:20:3318:20:3328 | else ... |
+| UseUseExplosion.rb:20:3323:20:3328 | self | UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3327:20:3327 | x | UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(self) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) |
| UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(x) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) |
| UseUseExplosion.rb:20:3334:20:3344 | else ... | UseUseExplosion.rb:20:472:20:3348 | if ... |
+| UseUseExplosion.rb:20:3339:20:3344 | [post] self | UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3339:20:3344 | call to use | UseUseExplosion.rb:20:3334:20:3344 | else ... |
+| UseUseExplosion.rb:20:3339:20:3344 | self | UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3343:20:3343 | x | UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(self) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) |
| UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(x) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) |
| UseUseExplosion.rb:20:3350:20:3360 | else ... | UseUseExplosion.rb:20:451:20:3364 | if ... |
+| UseUseExplosion.rb:20:3355:20:3360 | [post] self | UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3355:20:3360 | call to use | UseUseExplosion.rb:20:3350:20:3360 | else ... |
+| UseUseExplosion.rb:20:3355:20:3360 | self | UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3359:20:3359 | x | UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(self) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) |
| UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(x) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) |
| UseUseExplosion.rb:20:3366:20:3376 | else ... | UseUseExplosion.rb:20:430:20:3380 | if ... |
+| UseUseExplosion.rb:20:3371:20:3376 | [post] self | UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3371:20:3376 | call to use | UseUseExplosion.rb:20:3366:20:3376 | else ... |
+| UseUseExplosion.rb:20:3371:20:3376 | self | UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3375:20:3375 | x | UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(self) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) |
| UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(x) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) |
| UseUseExplosion.rb:20:3382:20:3392 | else ... | UseUseExplosion.rb:20:409:20:3396 | if ... |
+| UseUseExplosion.rb:20:3387:20:3392 | [post] self | UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3387:20:3392 | call to use | UseUseExplosion.rb:20:3382:20:3392 | else ... |
+| UseUseExplosion.rb:20:3387:20:3392 | self | UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3391:20:3391 | x | UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(self) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) |
| UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(x) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) |
| UseUseExplosion.rb:20:3398:20:3408 | else ... | UseUseExplosion.rb:20:388:20:3412 | if ... |
+| UseUseExplosion.rb:20:3403:20:3408 | [post] self | UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3403:20:3408 | call to use | UseUseExplosion.rb:20:3398:20:3408 | else ... |
+| UseUseExplosion.rb:20:3403:20:3408 | self | UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3407:20:3407 | x | UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(self) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) |
| UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(x) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) |
| UseUseExplosion.rb:20:3414:20:3424 | else ... | UseUseExplosion.rb:20:367:20:3428 | if ... |
+| UseUseExplosion.rb:20:3419:20:3424 | [post] self | UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3419:20:3424 | call to use | UseUseExplosion.rb:20:3414:20:3424 | else ... |
+| UseUseExplosion.rb:20:3419:20:3424 | self | UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3423:20:3423 | x | UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(self) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) |
| UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(x) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) |
| UseUseExplosion.rb:20:3430:20:3440 | else ... | UseUseExplosion.rb:20:346:20:3444 | if ... |
+| UseUseExplosion.rb:20:3435:20:3440 | [post] self | UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3435:20:3440 | call to use | UseUseExplosion.rb:20:3430:20:3440 | else ... |
+| UseUseExplosion.rb:20:3435:20:3440 | self | UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3439:20:3439 | x | UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(self) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) |
| UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(x) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) |
| UseUseExplosion.rb:20:3446:20:3456 | else ... | UseUseExplosion.rb:20:325:20:3460 | if ... |
+| UseUseExplosion.rb:20:3451:20:3456 | [post] self | UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3451:20:3456 | call to use | UseUseExplosion.rb:20:3446:20:3456 | else ... |
+| UseUseExplosion.rb:20:3451:20:3456 | self | UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3455:20:3455 | x | UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(self) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) |
| UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(x) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) |
| UseUseExplosion.rb:20:3462:20:3472 | else ... | UseUseExplosion.rb:20:304:20:3476 | if ... |
+| UseUseExplosion.rb:20:3467:20:3472 | [post] self | UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3467:20:3472 | call to use | UseUseExplosion.rb:20:3462:20:3472 | else ... |
+| UseUseExplosion.rb:20:3467:20:3472 | self | UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3471:20:3471 | x | UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(self) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) |
| UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(x) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) |
| UseUseExplosion.rb:20:3478:20:3488 | else ... | UseUseExplosion.rb:20:283:20:3492 | if ... |
+| UseUseExplosion.rb:20:3483:20:3488 | [post] self | UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3483:20:3488 | call to use | UseUseExplosion.rb:20:3478:20:3488 | else ... |
+| UseUseExplosion.rb:20:3483:20:3488 | self | UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3487:20:3487 | x | UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(self) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) |
| UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(x) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) |
| UseUseExplosion.rb:20:3494:20:3504 | else ... | UseUseExplosion.rb:20:262:20:3508 | if ... |
+| UseUseExplosion.rb:20:3499:20:3504 | [post] self | UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3499:20:3504 | call to use | UseUseExplosion.rb:20:3494:20:3504 | else ... |
+| UseUseExplosion.rb:20:3499:20:3504 | self | UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3503:20:3503 | x | UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(self) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) |
| UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(x) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) |
| UseUseExplosion.rb:20:3510:20:3520 | else ... | UseUseExplosion.rb:20:241:20:3524 | if ... |
+| UseUseExplosion.rb:20:3515:20:3520 | [post] self | UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3515:20:3520 | call to use | UseUseExplosion.rb:20:3510:20:3520 | else ... |
+| UseUseExplosion.rb:20:3515:20:3520 | self | UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3519:20:3519 | x | UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(self) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) |
| UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(x) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) |
| UseUseExplosion.rb:20:3526:20:3536 | else ... | UseUseExplosion.rb:20:220:20:3540 | if ... |
+| UseUseExplosion.rb:20:3531:20:3536 | [post] self | UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3531:20:3536 | call to use | UseUseExplosion.rb:20:3526:20:3536 | else ... |
+| UseUseExplosion.rb:20:3531:20:3536 | self | UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3535:20:3535 | x | UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(self) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) |
| UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(x) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) |
| UseUseExplosion.rb:20:3542:20:3552 | else ... | UseUseExplosion.rb:20:199:20:3556 | if ... |
+| UseUseExplosion.rb:20:3547:20:3552 | [post] self | UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3547:20:3552 | call to use | UseUseExplosion.rb:20:3542:20:3552 | else ... |
+| UseUseExplosion.rb:20:3547:20:3552 | self | UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3551:20:3551 | x | UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(self) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) |
| UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(x) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) |
| UseUseExplosion.rb:20:3558:20:3568 | else ... | UseUseExplosion.rb:20:178:20:3572 | if ... |
+| UseUseExplosion.rb:20:3563:20:3568 | [post] self | UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3563:20:3568 | call to use | UseUseExplosion.rb:20:3558:20:3568 | else ... |
+| UseUseExplosion.rb:20:3563:20:3568 | self | UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3567:20:3567 | x | UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(self) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) |
| UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(x) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) |
| UseUseExplosion.rb:20:3574:20:3584 | else ... | UseUseExplosion.rb:20:157:20:3588 | if ... |
+| UseUseExplosion.rb:20:3579:20:3584 | [post] self | UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3579:20:3584 | call to use | UseUseExplosion.rb:20:3574:20:3584 | else ... |
+| UseUseExplosion.rb:20:3579:20:3584 | self | UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3583:20:3583 | x | UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(self) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) |
| UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(x) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) |
| UseUseExplosion.rb:20:3590:20:3600 | else ... | UseUseExplosion.rb:20:136:20:3604 | if ... |
+| UseUseExplosion.rb:20:3595:20:3600 | [post] self | UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3595:20:3600 | call to use | UseUseExplosion.rb:20:3590:20:3600 | else ... |
+| UseUseExplosion.rb:20:3595:20:3600 | self | UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3599:20:3599 | x | UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(self) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) |
| UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(x) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) |
| UseUseExplosion.rb:20:3606:20:3616 | else ... | UseUseExplosion.rb:20:115:20:3620 | if ... |
+| UseUseExplosion.rb:20:3611:20:3616 | [post] self | UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3611:20:3616 | call to use | UseUseExplosion.rb:20:3606:20:3616 | else ... |
+| UseUseExplosion.rb:20:3611:20:3616 | self | UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3615:20:3615 | x | UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(self) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) |
| UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(x) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) |
| UseUseExplosion.rb:20:3622:20:3632 | else ... | UseUseExplosion.rb:20:94:20:3636 | if ... |
+| UseUseExplosion.rb:20:3627:20:3632 | [post] self | UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3627:20:3632 | call to use | UseUseExplosion.rb:20:3622:20:3632 | else ... |
+| UseUseExplosion.rb:20:3627:20:3632 | self | UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3631:20:3631 | x | UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(self) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) |
| UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(x) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) |
| UseUseExplosion.rb:20:3638:20:3648 | else ... | UseUseExplosion.rb:20:73:20:3652 | if ... |
+| UseUseExplosion.rb:20:3643:20:3648 | [post] self | UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3643:20:3648 | call to use | UseUseExplosion.rb:20:3638:20:3648 | else ... |
+| UseUseExplosion.rb:20:3643:20:3648 | self | UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3647:20:3647 | x | UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(self) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) |
| UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(x) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) |
| UseUseExplosion.rb:20:3654:20:3664 | else ... | UseUseExplosion.rb:20:52:20:3668 | if ... |
+| UseUseExplosion.rb:20:3659:20:3664 | [post] self | UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3659:20:3664 | call to use | UseUseExplosion.rb:20:3654:20:3664 | else ... |
+| UseUseExplosion.rb:20:3659:20:3664 | self | UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3663:20:3663 | x | UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(self) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) |
| UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(x) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) |
| UseUseExplosion.rb:20:3670:20:3680 | else ... | UseUseExplosion.rb:20:31:20:3684 | if ... |
+| UseUseExplosion.rb:20:3675:20:3680 | [post] self | UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3675:20:3680 | call to use | UseUseExplosion.rb:20:3670:20:3680 | else ... |
+| UseUseExplosion.rb:20:3675:20:3680 | self | UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3679:20:3679 | x | UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(self) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(self) |
| UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(x) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) |
| UseUseExplosion.rb:20:3686:20:3696 | else ... | UseUseExplosion.rb:20:9:20:3700 | if ... |
+| UseUseExplosion.rb:20:3691:20:3696 | [post] self | UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3691:20:3696 | call to use | UseUseExplosion.rb:20:3686:20:3696 | else ... |
+| UseUseExplosion.rb:20:3691:20:3696 | self | UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3695:20:3695 | x | UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(x) |
| UseUseExplosion.rb:21:13:21:17 | [post] self | UseUseExplosion.rb:21:35:21:39 | self |
| UseUseExplosion.rb:21:13:21:17 | [post] self | UseUseExplosion.rb:21:3691:21:3696 | self |
| UseUseExplosion.rb:21:13:21:17 | self | UseUseExplosion.rb:21:35:21:39 | self |
@@ -2838,9 +3140,11 @@
| local_dataflow.rb:10:9:10:9 | ... = ... | local_dataflow.rb:10:9:10:9 | if ... |
| local_dataflow.rb:10:9:10:9 | [input] phi | local_dataflow.rb:10:9:10:9 | phi |
| local_dataflow.rb:10:9:10:9 | [input] phi | local_dataflow.rb:10:9:10:9 | phi |
+| local_dataflow.rb:10:9:10:9 | [post] x | local_dataflow.rb:10:9:10:9 | [input] phi |
| 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 | [input] phi |
+| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | [input] 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 |
@@ -2855,9 +3159,11 @@
| local_dataflow.rb:15:5:15:5 | ... = ... | local_dataflow.rb:15:5:15:5 | if ... |
| local_dataflow.rb:15:5:15:5 | [input] phi | local_dataflow.rb:15:5:15:5 | phi |
| local_dataflow.rb:15:5:15:5 | [input] phi | local_dataflow.rb:15:5:15:5 | phi |
+| local_dataflow.rb:15:5:15:5 | [post] x | local_dataflow.rb:15:5:15:5 | [input] phi |
| 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 | [input] phi |
+| local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | [input] 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 |
@@ -2869,9 +3175,11 @@
| local_dataflow.rb:19:5:19:5 | ... = ... | local_dataflow.rb:19:5:19:5 | if ... |
| local_dataflow.rb:19:5:19:5 | [input] phi | local_dataflow.rb:19:5:19:5 | phi |
| local_dataflow.rb:19:5:19:5 | [input] phi | local_dataflow.rb:19:5:19:5 | phi |
+| local_dataflow.rb:19:5:19:5 | [post] x | local_dataflow.rb:19:5:19:5 | [input] phi |
| 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 | [input] phi |
+| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | [input] 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 |
@@ -2902,6 +3210,7 @@
| local_dataflow.rb:60:15:60:15 | x | local_dataflow.rb:61:12:61:12 | x |
| local_dataflow.rb:61:7:68:5 | SSA phi read(x) | local_dataflow.rb:69:12:69:12 | x |
| local_dataflow.rb:61:7:68:5 | case ... | local_dataflow.rb:61:3:68:5 | ... = ... |
+| local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:62:10:62:15 | [input] SSA phi read(x) |
| local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:63:15:63:15 | x |
| local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:65:6:65:6 | x |
| local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:67:5:67:5 | x |
@@ -2910,12 +3219,15 @@
| local_dataflow.rb:62:15:62:15 | 3 | local_dataflow.rb:62:10:62:15 | then ... |
| local_dataflow.rb:63:10:63:15 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) |
| local_dataflow.rb:63:10:63:15 | then ... | local_dataflow.rb:61:7:68:5 | case ... |
+| local_dataflow.rb:63:15:63:15 | x | local_dataflow.rb:63:10:63:15 | [input] SSA phi read(x) |
| local_dataflow.rb:63:15:63:15 | x | local_dataflow.rb:63:10:63:15 | then ... |
| local_dataflow.rb:64:9:65:6 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) |
| local_dataflow.rb:64:9:65:6 | then ... | local_dataflow.rb:61:7:68:5 | case ... |
+| local_dataflow.rb:65:6:65:6 | x | local_dataflow.rb:64:9:65:6 | [input] SSA phi read(x) |
| local_dataflow.rb:65:6:65:6 | x | local_dataflow.rb:64:9:65:6 | then ... |
| local_dataflow.rb:66:3:67:5 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) |
| local_dataflow.rb:66:3:67:5 | else ... | local_dataflow.rb:61:7:68:5 | case ... |
+| local_dataflow.rb:67:5:67:5 | x | local_dataflow.rb:66:3:67:5 | [input] SSA phi read(x) |
| local_dataflow.rb:67:5:67:5 | x | local_dataflow.rb:66:3:67:5 | else ... |
| local_dataflow.rb:69:7:76:5 | case ... | local_dataflow.rb:69:3:76:5 | ... = ... |
| local_dataflow.rb:69:12:69:12 | x | local_dataflow.rb:71:13:71:13 | x |
@@ -2950,13 +3262,17 @@
| local_dataflow.rb:79:13:79:13 | b | local_dataflow.rb:79:25:79:25 | b |
| local_dataflow.rb:79:15:79:45 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) |
| local_dataflow.rb:79:15:79:45 | then ... | local_dataflow.rb:78:7:88:5 | case ... |
+| local_dataflow.rb:79:20:79:26 | [post] self | local_dataflow.rb:79:15:79:45 | [input] SSA phi read(self) |
| local_dataflow.rb:79:20:79:26 | call to sink | local_dataflow.rb:79:15:79:45 | then ... |
+| local_dataflow.rb:79:20:79:26 | self | local_dataflow.rb:79:15:79:45 | [input] SSA phi read(self) |
| local_dataflow.rb:80:8:80:8 | a | local_dataflow.rb:80:13:80:13 | a |
| local_dataflow.rb:80:13:80:13 | [post] a | local_dataflow.rb:80:29:80:29 | a |
| local_dataflow.rb:80:13:80:13 | a | local_dataflow.rb:80:29:80:29 | a |
| local_dataflow.rb:80:19:80:49 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) |
| local_dataflow.rb:80:19:80:49 | then ... | local_dataflow.rb:78:7:88:5 | case ... |
+| local_dataflow.rb:80:24:80:30 | [post] self | local_dataflow.rb:80:19:80:49 | [input] SSA phi read(self) |
| local_dataflow.rb:80:24:80:30 | call to sink | local_dataflow.rb:80:19:80:49 | then ... |
+| local_dataflow.rb:80:24:80:30 | self | local_dataflow.rb:80:19:80:49 | [input] SSA phi read(self) |
| local_dataflow.rb:81:9:81:9 | c | local_dataflow.rb:82:12:82:12 | c |
| local_dataflow.rb:81:13:81:13 | d | local_dataflow.rb:83:12:83:12 | d |
| local_dataflow.rb:81:16:81:16 | e | local_dataflow.rb:84:12:84:12 | e |
@@ -2968,17 +3284,25 @@
| local_dataflow.rb:82:7:82:13 | self | local_dataflow.rb:83:7:83:13 | self |
| local_dataflow.rb:83:7:83:13 | [post] self | local_dataflow.rb:84:7:84:13 | self |
| local_dataflow.rb:83:7:83:13 | self | local_dataflow.rb:84:7:84:13 | self |
+| local_dataflow.rb:84:7:84:13 | [post] self | local_dataflow.rb:81:20:84:33 | [input] SSA phi read(self) |
+| local_dataflow.rb:84:7:84:13 | self | local_dataflow.rb:81:20:84:33 | [input] SSA phi read(self) |
| local_dataflow.rb:85:13:85:13 | f | local_dataflow.rb:85:27:85:27 | f |
| local_dataflow.rb:85:17:85:47 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) |
| local_dataflow.rb:85:17:85:47 | then ... | local_dataflow.rb:78:7:88:5 | case ... |
+| local_dataflow.rb:85:22:85:28 | [post] self | local_dataflow.rb:85:17:85:47 | [input] SSA phi read(self) |
| local_dataflow.rb:85:22:85:28 | call to sink | local_dataflow.rb:85:17:85:47 | then ... |
+| local_dataflow.rb:85:22:85:28 | self | local_dataflow.rb:85:17:85:47 | [input] SSA phi read(self) |
| local_dataflow.rb:86:18:86:18 | g | local_dataflow.rb:86:33:86:33 | g |
| local_dataflow.rb:86:23:86:53 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) |
| local_dataflow.rb:86:23:86:53 | then ... | local_dataflow.rb:78:7:88:5 | case ... |
+| local_dataflow.rb:86:28:86:34 | [post] self | local_dataflow.rb:86:23:86:53 | [input] SSA phi read(self) |
| local_dataflow.rb:86:28:86:34 | call to sink | local_dataflow.rb:86:23:86:53 | then ... |
+| local_dataflow.rb:86:28:86:34 | self | local_dataflow.rb:86:23:86:53 | [input] SSA phi read(self) |
| local_dataflow.rb:87:10:87:10 | x | local_dataflow.rb:87:25:87:25 | x |
| local_dataflow.rb:87:15:87:48 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) |
| local_dataflow.rb:87:15:87:48 | then ... | local_dataflow.rb:78:7:88:5 | case ... |
+| local_dataflow.rb:87:20:87:26 | [post] self | local_dataflow.rb:87:15:87:48 | [input] SSA phi read(self) |
+| local_dataflow.rb:87:20:87:26 | self | local_dataflow.rb:87:15:87:48 | [input] SSA phi read(self) |
| local_dataflow.rb:87:25:87:25 | [post] x | local_dataflow.rb:87:29:87:29 | x |
| local_dataflow.rb:87:25:87:25 | x | local_dataflow.rb:87:29:87:29 | x |
| local_dataflow.rb:87:29:87:29 | x | local_dataflow.rb:87:15:87:48 | then ... |
@@ -2986,56 +3310,74 @@
| local_dataflow.rb:92:1:109:3 | self in and_or | local_dataflow.rb:92:1:109:3 | self (and_or) |
| local_dataflow.rb:93:3:93:3 | a | local_dataflow.rb:94:8:94:8 | a |
| local_dataflow.rb:93:7:93:15 | [input] SSA phi read(self) | local_dataflow.rb:93:7:93:28 | SSA phi read(self) |
+| local_dataflow.rb:93:7:93:15 | [post] self | local_dataflow.rb:93:7:93:15 | [input] SSA phi read(self) |
| local_dataflow.rb:93:7:93:15 | [post] self | local_dataflow.rb:93:20:93:28 | self |
| local_dataflow.rb:93:7:93:15 | call to source | local_dataflow.rb:93:7:93:28 | ... \|\| ... |
+| local_dataflow.rb:93:7:93:15 | self | local_dataflow.rb:93:7:93:15 | [input] SSA phi read(self) |
| local_dataflow.rb:93:7:93:15 | self | local_dataflow.rb:93:20:93:28 | self |
| local_dataflow.rb:93:7:93:28 | ... \|\| ... | local_dataflow.rb:93:3:93:3 | a |
| local_dataflow.rb:93:7:93:28 | ... \|\| ... | local_dataflow.rb:93:3:93:28 | ... = ... |
| local_dataflow.rb:93:7:93:28 | SSA phi read(self) | local_dataflow.rb:94:3:94:9 | self |
| local_dataflow.rb:93:20:93:28 | [input] SSA phi read(self) | local_dataflow.rb:93:7:93:28 | SSA phi read(self) |
+| local_dataflow.rb:93:20:93:28 | [post] self | local_dataflow.rb:93:20:93:28 | [input] SSA phi read(self) |
| local_dataflow.rb:93:20:93:28 | call to source | local_dataflow.rb:93:7:93:28 | ... \|\| ... |
+| local_dataflow.rb:93:20:93:28 | self | local_dataflow.rb:93:20:93:28 | [input] SSA phi read(self) |
| local_dataflow.rb:94:3:94:9 | [post] self | local_dataflow.rb:95:8:95:16 | self |
| local_dataflow.rb:94:3:94:9 | self | local_dataflow.rb:95:8:95:16 | self |
| local_dataflow.rb:95:3:95:3 | b | local_dataflow.rb:96:8:96:8 | b |
| local_dataflow.rb:95:7:95:30 | ( ... ) | local_dataflow.rb:95:3:95:3 | b |
| local_dataflow.rb:95:7:95:30 | ( ... ) | local_dataflow.rb:95:3:95:30 | ... = ... |
| local_dataflow.rb:95:8:95:16 | [input] SSA phi read(self) | local_dataflow.rb:95:8:95:29 | SSA phi read(self) |
+| local_dataflow.rb:95:8:95:16 | [post] self | local_dataflow.rb:95:8:95:16 | [input] SSA phi read(self) |
| local_dataflow.rb:95:8:95:16 | [post] self | local_dataflow.rb:95:21:95:29 | self |
| local_dataflow.rb:95:8:95:16 | call to source | local_dataflow.rb:95:8:95:29 | ... or ... |
+| local_dataflow.rb:95:8:95:16 | self | local_dataflow.rb:95:8:95:16 | [input] SSA phi read(self) |
| local_dataflow.rb:95:8:95:16 | self | local_dataflow.rb:95:21:95:29 | self |
| local_dataflow.rb:95:8:95:29 | ... or ... | local_dataflow.rb:95:7:95:30 | ( ... ) |
| local_dataflow.rb:95:8:95:29 | SSA phi read(self) | local_dataflow.rb:96:3:96:9 | self |
| local_dataflow.rb:95:21:95:29 | [input] SSA phi read(self) | local_dataflow.rb:95:8:95:29 | SSA phi read(self) |
+| local_dataflow.rb:95:21:95:29 | [post] self | local_dataflow.rb:95:21:95:29 | [input] SSA phi read(self) |
| local_dataflow.rb:95:21:95:29 | call to source | local_dataflow.rb:95:8:95:29 | ... or ... |
+| local_dataflow.rb:95:21:95:29 | self | local_dataflow.rb:95:21:95:29 | [input] SSA phi read(self) |
| local_dataflow.rb:96:3:96:9 | [post] self | local_dataflow.rb:98:7:98:15 | self |
| local_dataflow.rb:96:3:96:9 | self | local_dataflow.rb:98:7:98:15 | self |
| local_dataflow.rb:98:3:98:3 | a | local_dataflow.rb:99:8:99:8 | a |
| local_dataflow.rb:98:7:98:15 | [input] SSA phi read(self) | local_dataflow.rb:98:7:98:28 | SSA phi read(self) |
+| local_dataflow.rb:98:7:98:15 | [post] self | local_dataflow.rb:98:7:98:15 | [input] SSA phi read(self) |
| local_dataflow.rb:98:7:98:15 | [post] self | local_dataflow.rb:98:20:98:28 | self |
+| local_dataflow.rb:98:7:98:15 | self | local_dataflow.rb:98:7:98:15 | [input] SSA phi read(self) |
| local_dataflow.rb:98:7:98:15 | self | local_dataflow.rb:98:20:98:28 | self |
| local_dataflow.rb:98:7:98:28 | ... && ... | local_dataflow.rb:98:3:98:3 | a |
| local_dataflow.rb:98:7:98:28 | ... && ... | local_dataflow.rb:98:3:98:28 | ... = ... |
| local_dataflow.rb:98:7:98:28 | SSA phi read(self) | local_dataflow.rb:99:3:99:9 | self |
| local_dataflow.rb:98:20:98:28 | [input] SSA phi read(self) | local_dataflow.rb:98:7:98:28 | SSA phi read(self) |
+| local_dataflow.rb:98:20:98:28 | [post] self | local_dataflow.rb:98:20:98:28 | [input] SSA phi read(self) |
| local_dataflow.rb:98:20:98:28 | call to source | local_dataflow.rb:98:7:98:28 | ... && ... |
+| local_dataflow.rb:98:20:98:28 | self | local_dataflow.rb:98:20:98:28 | [input] SSA phi read(self) |
| local_dataflow.rb:99:3:99:9 | [post] self | local_dataflow.rb:100:8:100:16 | self |
| local_dataflow.rb:99:3:99:9 | self | local_dataflow.rb:100:8:100:16 | self |
| local_dataflow.rb:100:3:100:3 | b | local_dataflow.rb:101:8:101:8 | b |
| local_dataflow.rb:100:7:100:31 | ( ... ) | local_dataflow.rb:100:3:100:3 | b |
| local_dataflow.rb:100:7:100:31 | ( ... ) | local_dataflow.rb:100:3:100:31 | ... = ... |
| local_dataflow.rb:100:8:100:16 | [input] SSA phi read(self) | local_dataflow.rb:100:8:100:30 | SSA phi read(self) |
+| local_dataflow.rb:100:8:100:16 | [post] self | local_dataflow.rb:100:8:100:16 | [input] SSA phi read(self) |
| local_dataflow.rb:100:8:100:16 | [post] self | local_dataflow.rb:100:22:100:30 | self |
+| local_dataflow.rb:100:8:100:16 | self | local_dataflow.rb:100:8:100:16 | [input] SSA phi read(self) |
| local_dataflow.rb:100:8:100:16 | self | local_dataflow.rb:100:22:100:30 | self |
| local_dataflow.rb:100:8:100:30 | ... and ... | local_dataflow.rb:100:7:100:31 | ( ... ) |
| local_dataflow.rb:100:8:100:30 | SSA phi read(self) | local_dataflow.rb:101:3:101:9 | self |
| local_dataflow.rb:100:22:100:30 | [input] SSA phi read(self) | local_dataflow.rb:100:8:100:30 | SSA phi read(self) |
+| local_dataflow.rb:100:22:100:30 | [post] self | local_dataflow.rb:100:22:100:30 | [input] SSA phi read(self) |
| local_dataflow.rb:100:22:100:30 | call to source | local_dataflow.rb:100:8:100:30 | ... and ... |
+| local_dataflow.rb:100:22:100:30 | self | local_dataflow.rb:100:22:100:30 | [input] SSA phi read(self) |
| local_dataflow.rb:101:3:101:9 | [post] self | local_dataflow.rb:103:7:103:15 | self |
| local_dataflow.rb:101:3:101:9 | self | local_dataflow.rb:103:7:103:15 | self |
| local_dataflow.rb:103:3:103:3 | a | local_dataflow.rb:104:3:104:3 | a |
+| local_dataflow.rb:103:7:103:15 | [post] self | local_dataflow.rb:104:3:104:3 | [input] SSA phi read(self) |
| local_dataflow.rb:103:7:103:15 | [post] self | local_dataflow.rb:104:9:104:17 | self |
| local_dataflow.rb:103:7:103:15 | call to source | local_dataflow.rb:103:3:103:3 | a |
| local_dataflow.rb:103:7:103:15 | call to source | local_dataflow.rb:103:3:103:15 | ... = ... |
+| local_dataflow.rb:103:7:103:15 | self | local_dataflow.rb:104:3:104:3 | [input] SSA phi read(self) |
| local_dataflow.rb:103:7:103:15 | self | local_dataflow.rb:104:9:104:17 | self |
| local_dataflow.rb:104:3:104:3 | [input] SSA phi read(self) | local_dataflow.rb:104:5:104:7 | SSA phi read(self) |
| local_dataflow.rb:104:3:104:3 | a | local_dataflow.rb:104:5:104:7 | ... \|\| ... |
@@ -3044,13 +3386,17 @@
| local_dataflow.rb:104:5:104:7 | ... \|\| ... | local_dataflow.rb:104:3:104:17 | ... = ... |
| local_dataflow.rb:104:5:104:7 | SSA phi read(self) | local_dataflow.rb:105:3:105:9 | self |
| local_dataflow.rb:104:9:104:17 | [input] SSA phi read(self) | local_dataflow.rb:104:5:104:7 | SSA phi read(self) |
+| local_dataflow.rb:104:9:104:17 | [post] self | local_dataflow.rb:104:9:104:17 | [input] SSA phi read(self) |
| local_dataflow.rb:104:9:104:17 | call to source | local_dataflow.rb:104:5:104:7 | ... \|\| ... |
+| local_dataflow.rb:104:9:104:17 | self | local_dataflow.rb:104:9:104:17 | [input] SSA phi read(self) |
| local_dataflow.rb:105:3:105:9 | [post] self | local_dataflow.rb:106:7:106:15 | self |
| local_dataflow.rb:105:3:105:9 | self | local_dataflow.rb:106:7:106:15 | self |
| local_dataflow.rb:106:3:106:3 | b | local_dataflow.rb:107:3:107:3 | b |
+| local_dataflow.rb:106:7:106:15 | [post] self | local_dataflow.rb:107:3:107:3 | [input] SSA phi read(self) |
| local_dataflow.rb:106:7:106:15 | [post] self | local_dataflow.rb:107:9:107:17 | self |
| local_dataflow.rb:106:7:106:15 | call to source | local_dataflow.rb:106:3:106:3 | b |
| local_dataflow.rb:106:7:106:15 | call to source | local_dataflow.rb:106:3:106:15 | ... = ... |
+| local_dataflow.rb:106:7:106:15 | self | local_dataflow.rb:107:3:107:3 | [input] SSA phi read(self) |
| local_dataflow.rb:106:7:106:15 | self | local_dataflow.rb:107:9:107:17 | self |
| local_dataflow.rb:107:3:107:3 | [input] SSA phi read(self) | local_dataflow.rb:107:5:107:7 | SSA phi read(self) |
| local_dataflow.rb:107:3:107:3 | b | local_dataflow.rb:108:8:108:8 | b |
@@ -3058,7 +3404,9 @@
| local_dataflow.rb:107:5:107:7 | ... && ... | local_dataflow.rb:107:3:107:17 | ... = ... |
| local_dataflow.rb:107:5:107:7 | SSA phi read(self) | local_dataflow.rb:108:3:108:9 | self |
| local_dataflow.rb:107:9:107:17 | [input] SSA phi read(self) | local_dataflow.rb:107:5:107:7 | SSA phi read(self) |
+| local_dataflow.rb:107:9:107:17 | [post] self | local_dataflow.rb:107:9:107:17 | [input] SSA phi read(self) |
| local_dataflow.rb:107:9:107:17 | call to source | local_dataflow.rb:107:5:107:7 | ... && ... |
+| local_dataflow.rb:107:9:107:17 | self | local_dataflow.rb:107:9:107:17 | [input] SSA phi read(self) |
| local_dataflow.rb:111:1:114:3 | self (object_dup) | local_dataflow.rb:112:3:112:21 | self |
| local_dataflow.rb:111:1:114:3 | self in object_dup | local_dataflow.rb:111:1:114:3 | self (object_dup) |
| local_dataflow.rb:112:3:112:21 | [post] self | local_dataflow.rb:112:8:112:16 | self |
@@ -3111,26 +3459,38 @@
| local_dataflow.rb:133:5:139:7 | SSA phi read(x) | local_dataflow.rb:141:13:141:13 | x |
| local_dataflow.rb:133:8:133:13 | [input] SSA phi read(self) | local_dataflow.rb:133:8:133:23 | SSA phi read(self) |
| local_dataflow.rb:133:8:133:13 | [input] SSA phi read(x) | local_dataflow.rb:133:8:133:23 | SSA phi read(x) |
+| local_dataflow.rb:133:8:133:13 | [post] self | local_dataflow.rb:133:8:133:13 | [input] SSA phi read(self) |
| local_dataflow.rb:133:8:133:13 | [post] self | local_dataflow.rb:133:18:133:23 | self |
| local_dataflow.rb:133:8:133:13 | call to use | local_dataflow.rb:133:8:133:23 | [false] ... \|\| ... |
| local_dataflow.rb:133:8:133:13 | call to use | local_dataflow.rb:133:8:133:23 | [true] ... \|\| ... |
+| local_dataflow.rb:133:8:133:13 | self | local_dataflow.rb:133:8:133:13 | [input] SSA phi read(self) |
| local_dataflow.rb:133:8:133:13 | self | local_dataflow.rb:133:18:133:23 | self |
| local_dataflow.rb:133:8:133:23 | SSA phi read(self) | local_dataflow.rb:134:7:134:12 | self |
| local_dataflow.rb:133:8:133:23 | SSA phi read(x) | local_dataflow.rb:134:11:134:11 | x |
+| local_dataflow.rb:133:12:133:12 | [post] x | local_dataflow.rb:133:8:133:13 | [input] SSA phi read(x) |
| local_dataflow.rb:133:12:133:12 | [post] x | local_dataflow.rb:133:22:133:22 | x |
+| local_dataflow.rb:133:12:133:12 | x | local_dataflow.rb:133:8:133:13 | [input] SSA phi read(x) |
| local_dataflow.rb:133:12:133:12 | x | local_dataflow.rb:133:22:133:22 | x |
| local_dataflow.rb:133:18:133:23 | [input] SSA phi read(self) | local_dataflow.rb:133:8:133:23 | SSA phi read(self) |
| local_dataflow.rb:133:18:133:23 | [input] SSA phi read(x) | local_dataflow.rb:133:8:133:23 | SSA phi read(x) |
+| local_dataflow.rb:133:18:133:23 | [post] self | local_dataflow.rb:133:18:133:23 | [input] SSA phi read(self) |
| local_dataflow.rb:133:18:133:23 | [post] self | local_dataflow.rb:136:7:136:12 | self |
| local_dataflow.rb:133:18:133:23 | call to use | local_dataflow.rb:133:8:133:23 | [false] ... \|\| ... |
| local_dataflow.rb:133:18:133:23 | call to use | local_dataflow.rb:133:8:133:23 | [true] ... \|\| ... |
+| local_dataflow.rb:133:18:133:23 | self | local_dataflow.rb:133:18:133:23 | [input] SSA phi read(self) |
| local_dataflow.rb:133:18:133:23 | self | local_dataflow.rb:136:7:136:12 | self |
+| local_dataflow.rb:133:22:133:22 | [post] x | local_dataflow.rb:133:18:133:23 | [input] SSA phi read(x) |
| local_dataflow.rb:133:22:133:22 | [post] x | local_dataflow.rb:136:11:136:11 | x |
+| local_dataflow.rb:133:22:133:22 | x | local_dataflow.rb:133:18:133:23 | [input] SSA phi read(x) |
| local_dataflow.rb:133:22:133:22 | x | local_dataflow.rb:136:11:136:11 | x |
| local_dataflow.rb:133:24:134:12 | [input] SSA phi read(self) | local_dataflow.rb:133:5:139:7 | SSA phi read(self) |
| local_dataflow.rb:133:24:134:12 | [input] SSA phi read(x) | local_dataflow.rb:133:5:139:7 | SSA phi read(x) |
| local_dataflow.rb:133:24:134:12 | then ... | local_dataflow.rb:133:5:139:7 | if ... |
+| local_dataflow.rb:134:7:134:12 | [post] self | local_dataflow.rb:133:24:134:12 | [input] SSA phi read(self) |
| local_dataflow.rb:134:7:134:12 | call to use | local_dataflow.rb:133:24:134:12 | then ... |
+| local_dataflow.rb:134:7:134:12 | self | local_dataflow.rb:133:24:134:12 | [input] SSA phi read(self) |
+| local_dataflow.rb:134:11:134:11 | [post] x | local_dataflow.rb:133:24:134:12 | [input] SSA phi read(x) |
+| local_dataflow.rb:134:11:134:11 | x | local_dataflow.rb:133:24:134:12 | [input] SSA phi read(x) |
| local_dataflow.rb:135:5:138:9 | [input] SSA phi read(self) | local_dataflow.rb:133:5:139:7 | SSA phi read(self) |
| local_dataflow.rb:135:5:138:9 | [input] SSA phi read(x) | local_dataflow.rb:133:5:139:7 | SSA phi read(x) |
| local_dataflow.rb:135:5:138:9 | else ... | local_dataflow.rb:133:5:139:7 | if ... |
@@ -3143,7 +3503,9 @@
| local_dataflow.rb:137:7:138:9 | if ... | local_dataflow.rb:135:5:138:9 | else ... |
| local_dataflow.rb:137:10:137:15 | [input] SSA phi read(self) | local_dataflow.rb:137:10:137:26 | SSA phi read(self) |
| local_dataflow.rb:137:10:137:15 | [input] SSA phi read(x) | local_dataflow.rb:137:10:137:26 | SSA phi read(x) |
+| local_dataflow.rb:137:10:137:15 | [post] self | local_dataflow.rb:137:10:137:15 | [input] SSA phi read(self) |
| local_dataflow.rb:137:10:137:15 | [post] self | local_dataflow.rb:137:21:137:26 | self |
+| local_dataflow.rb:137:10:137:15 | self | local_dataflow.rb:137:10:137:15 | [input] SSA phi read(self) |
| local_dataflow.rb:137:10:137:15 | self | local_dataflow.rb:137:21:137:26 | self |
| local_dataflow.rb:137:10:137:26 | SSA phi read(self) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) |
| local_dataflow.rb:137:10:137:26 | SSA phi read(x) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) |
@@ -3151,12 +3513,22 @@
| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:7:138:9 | SSA phi read(self) |
| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:7:138:9 | SSA phi read(x) |
| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:7:138:9 | SSA phi read(x) |
+| local_dataflow.rb:137:14:137:14 | [post] x | local_dataflow.rb:137:10:137:15 | [input] SSA phi read(x) |
| local_dataflow.rb:137:14:137:14 | [post] x | local_dataflow.rb:137:25:137:25 | x |
+| local_dataflow.rb:137:14:137:14 | x | local_dataflow.rb:137:10:137:15 | [input] SSA phi read(x) |
| local_dataflow.rb:137:14:137:14 | x | local_dataflow.rb:137:25:137:25 | x |
| local_dataflow.rb:137:20:137:26 | [false] ! ... | local_dataflow.rb:137:10:137:26 | [false] ... && ... |
| local_dataflow.rb:137:20:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:10:137:26 | SSA phi read(self) |
| local_dataflow.rb:137:20:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:10:137:26 | SSA phi read(x) |
| local_dataflow.rb:137:20:137:26 | [true] ! ... | local_dataflow.rb:137:10:137:26 | [true] ... && ... |
+| local_dataflow.rb:137:21:137:26 | [post] self | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) |
+| local_dataflow.rb:137:21:137:26 | [post] self | local_dataflow.rb:137:20:137:26 | [input] SSA phi read(self) |
+| local_dataflow.rb:137:21:137:26 | self | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) |
+| local_dataflow.rb:137:21:137:26 | self | local_dataflow.rb:137:20:137:26 | [input] SSA phi read(self) |
+| local_dataflow.rb:137:25:137:25 | [post] x | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) |
+| local_dataflow.rb:137:25:137:25 | [post] x | local_dataflow.rb:137:20:137:26 | [input] SSA phi read(x) |
+| local_dataflow.rb:137:25:137:25 | x | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) |
+| local_dataflow.rb:137:25:137:25 | x | local_dataflow.rb:137:20:137:26 | [input] SSA phi read(x) |
| local_dataflow.rb:141:5:145:7 | SSA phi read(self) | local_dataflow.rb:147:5:147:10 | self |
| local_dataflow.rb:141:5:145:7 | SSA phi read(x) | local_dataflow.rb:147:9:147:9 | x |
| local_dataflow.rb:141:8:141:14 | [false] ! ... | local_dataflow.rb:141:8:141:37 | [false] ... \|\| ... |
@@ -3166,9 +3538,13 @@
| local_dataflow.rb:141:8:141:14 | [true] ! ... | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... |
| local_dataflow.rb:141:8:141:37 | SSA phi read(self) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) |
| local_dataflow.rb:141:8:141:37 | SSA phi read(x) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) |
+| local_dataflow.rb:141:9:141:14 | [post] self | local_dataflow.rb:141:8:141:14 | [input] SSA phi read(self) |
| local_dataflow.rb:141:9:141:14 | [post] self | local_dataflow.rb:141:20:141:25 | self |
+| local_dataflow.rb:141:9:141:14 | self | local_dataflow.rb:141:8:141:14 | [input] SSA phi read(self) |
| local_dataflow.rb:141:9:141:14 | self | local_dataflow.rb:141:20:141:25 | self |
+| local_dataflow.rb:141:13:141:13 | [post] x | local_dataflow.rb:141:8:141:14 | [input] SSA phi read(x) |
| local_dataflow.rb:141:13:141:13 | [post] x | local_dataflow.rb:141:24:141:24 | x |
+| local_dataflow.rb:141:13:141:13 | x | local_dataflow.rb:141:8:141:14 | [input] SSA phi read(x) |
| local_dataflow.rb:141:13:141:13 | x | local_dataflow.rb:141:24:141:24 | x |
| local_dataflow.rb:141:19:141:37 | [false] ( ... ) | local_dataflow.rb:141:8:141:37 | [false] ... \|\| ... |
| local_dataflow.rb:141:19:141:37 | [input] SSA phi read(self) | local_dataflow.rb:141:8:141:37 | SSA phi read(self) |
@@ -3176,18 +3552,30 @@
| local_dataflow.rb:141:19:141:37 | [true] ( ... ) | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... |
| local_dataflow.rb:141:20:141:25 | [input] SSA phi read(self) | local_dataflow.rb:141:20:141:36 | SSA phi read(self) |
| local_dataflow.rb:141:20:141:25 | [input] SSA phi read(x) | local_dataflow.rb:141:20:141:36 | SSA phi read(x) |
+| local_dataflow.rb:141:20:141:25 | [post] self | local_dataflow.rb:141:20:141:25 | [input] SSA phi read(self) |
| local_dataflow.rb:141:20:141:25 | [post] self | local_dataflow.rb:141:31:141:36 | self |
+| local_dataflow.rb:141:20:141:25 | self | local_dataflow.rb:141:20:141:25 | [input] SSA phi read(self) |
| local_dataflow.rb:141:20:141:25 | self | local_dataflow.rb:141:31:141:36 | self |
| local_dataflow.rb:141:20:141:36 | SSA phi read(self) | local_dataflow.rb:143:11:143:16 | self |
| local_dataflow.rb:141:20:141:36 | SSA phi read(x) | local_dataflow.rb:143:15:143:15 | x |
| local_dataflow.rb:141:20:141:36 | [false] ... && ... | local_dataflow.rb:141:19:141:37 | [false] ( ... ) |
| local_dataflow.rb:141:20:141:36 | [true] ... && ... | local_dataflow.rb:141:19:141:37 | [true] ( ... ) |
+| local_dataflow.rb:141:24:141:24 | [post] x | local_dataflow.rb:141:20:141:25 | [input] SSA phi read(x) |
| local_dataflow.rb:141:24:141:24 | [post] x | local_dataflow.rb:141:35:141:35 | x |
+| local_dataflow.rb:141:24:141:24 | x | local_dataflow.rb:141:20:141:25 | [input] SSA phi read(x) |
| local_dataflow.rb:141:24:141:24 | x | local_dataflow.rb:141:35:141:35 | x |
| local_dataflow.rb:141:30:141:36 | [false] ! ... | local_dataflow.rb:141:20:141:36 | [false] ... && ... |
| local_dataflow.rb:141:30:141:36 | [input] SSA phi read(self) | local_dataflow.rb:141:20:141:36 | SSA phi read(self) |
| local_dataflow.rb:141:30:141:36 | [input] SSA phi read(x) | local_dataflow.rb:141:20:141:36 | SSA phi read(x) |
| local_dataflow.rb:141:30:141:36 | [true] ! ... | local_dataflow.rb:141:20:141:36 | [true] ... && ... |
+| local_dataflow.rb:141:31:141:36 | [post] self | local_dataflow.rb:141:19:141:37 | [input] SSA phi read(self) |
+| local_dataflow.rb:141:31:141:36 | [post] self | local_dataflow.rb:141:30:141:36 | [input] SSA phi read(self) |
+| local_dataflow.rb:141:31:141:36 | self | local_dataflow.rb:141:19:141:37 | [input] SSA phi read(self) |
+| local_dataflow.rb:141:31:141:36 | self | local_dataflow.rb:141:30:141:36 | [input] SSA phi read(self) |
+| local_dataflow.rb:141:35:141:35 | [post] x | local_dataflow.rb:141:19:141:37 | [input] SSA phi read(x) |
+| local_dataflow.rb:141:35:141:35 | [post] x | local_dataflow.rb:141:30:141:36 | [input] SSA phi read(x) |
+| local_dataflow.rb:141:35:141:35 | x | local_dataflow.rb:141:19:141:37 | [input] SSA phi read(x) |
+| local_dataflow.rb:141:35:141:35 | x | local_dataflow.rb:141:30:141:36 | [input] SSA phi read(x) |
| local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) | local_dataflow.rb:141:5:145:7 | SSA phi read(self) |
| local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) | local_dataflow.rb:141:5:145:7 | SSA phi read(x) |
| local_dataflow.rb:141:38:142:9 | then ... | local_dataflow.rb:141:5:145:7 | if ... |
@@ -3199,24 +3587,40 @@
| local_dataflow.rb:143:5:144:16 | elsif ... | local_dataflow.rb:141:5:145:7 | if ... |
| local_dataflow.rb:143:11:143:16 | [input] SSA phi read(self) | local_dataflow.rb:143:11:143:26 | SSA phi read(self) |
| local_dataflow.rb:143:11:143:16 | [input] SSA phi read(x) | local_dataflow.rb:143:11:143:26 | SSA phi read(x) |
+| local_dataflow.rb:143:11:143:16 | [post] self | local_dataflow.rb:143:11:143:16 | [input] SSA phi read(self) |
| local_dataflow.rb:143:11:143:16 | [post] self | local_dataflow.rb:143:21:143:26 | self |
| local_dataflow.rb:143:11:143:16 | call to use | local_dataflow.rb:143:11:143:26 | [false] ... \|\| ... |
| local_dataflow.rb:143:11:143:16 | call to use | local_dataflow.rb:143:11:143:26 | [true] ... \|\| ... |
+| local_dataflow.rb:143:11:143:16 | self | local_dataflow.rb:143:11:143:16 | [input] SSA phi read(self) |
| local_dataflow.rb:143:11:143:16 | self | local_dataflow.rb:143:21:143:26 | self |
| local_dataflow.rb:143:11:143:26 | SSA phi read(self) | local_dataflow.rb:144:11:144:16 | self |
| local_dataflow.rb:143:11:143:26 | SSA phi read(x) | local_dataflow.rb:144:15:144:15 | x |
| local_dataflow.rb:143:11:143:26 | [input] SSA phi read(self) | local_dataflow.rb:143:5:144:16 | SSA phi read(self) |
| local_dataflow.rb:143:11:143:26 | [input] SSA phi read(x) | local_dataflow.rb:143:5:144:16 | SSA phi read(x) |
+| local_dataflow.rb:143:15:143:15 | [post] x | local_dataflow.rb:143:11:143:16 | [input] SSA phi read(x) |
| local_dataflow.rb:143:15:143:15 | [post] x | local_dataflow.rb:143:25:143:25 | x |
+| local_dataflow.rb:143:15:143:15 | x | local_dataflow.rb:143:11:143:16 | [input] SSA phi read(x) |
| local_dataflow.rb:143:15:143:15 | x | local_dataflow.rb:143:25:143:25 | x |
| local_dataflow.rb:143:21:143:26 | [input] SSA phi read(self) | local_dataflow.rb:143:11:143:26 | SSA phi read(self) |
| local_dataflow.rb:143:21:143:26 | [input] SSA phi read(x) | local_dataflow.rb:143:11:143:26 | SSA phi read(x) |
+| local_dataflow.rb:143:21:143:26 | [post] self | local_dataflow.rb:143:11:143:26 | [input] SSA phi read(self) |
+| local_dataflow.rb:143:21:143:26 | [post] self | local_dataflow.rb:143:21:143:26 | [input] SSA phi read(self) |
| local_dataflow.rb:143:21:143:26 | call to use | local_dataflow.rb:143:11:143:26 | [false] ... \|\| ... |
| local_dataflow.rb:143:21:143:26 | call to use | local_dataflow.rb:143:11:143:26 | [true] ... \|\| ... |
+| local_dataflow.rb:143:21:143:26 | self | local_dataflow.rb:143:11:143:26 | [input] SSA phi read(self) |
+| local_dataflow.rb:143:21:143:26 | self | local_dataflow.rb:143:21:143:26 | [input] SSA phi read(self) |
+| local_dataflow.rb:143:25:143:25 | [post] x | local_dataflow.rb:143:11:143:26 | [input] SSA phi read(x) |
+| local_dataflow.rb:143:25:143:25 | [post] x | local_dataflow.rb:143:21:143:26 | [input] SSA phi read(x) |
+| local_dataflow.rb:143:25:143:25 | x | local_dataflow.rb:143:11:143:26 | [input] SSA phi read(x) |
+| local_dataflow.rb:143:25:143:25 | x | local_dataflow.rb:143:21:143:26 | [input] SSA phi read(x) |
| local_dataflow.rb:143:27:144:16 | [input] SSA phi read(self) | local_dataflow.rb:143:5:144:16 | SSA phi read(self) |
| local_dataflow.rb:143:27:144:16 | [input] SSA phi read(x) | local_dataflow.rb:143:5:144:16 | SSA phi read(x) |
| local_dataflow.rb:143:27:144:16 | then ... | local_dataflow.rb:143:5:144:16 | elsif ... |
+| local_dataflow.rb:144:11:144:16 | [post] self | local_dataflow.rb:143:27:144:16 | [input] SSA phi read(self) |
| local_dataflow.rb:144:11:144:16 | call to use | local_dataflow.rb:143:27:144:16 | then ... |
+| local_dataflow.rb:144:11:144:16 | self | local_dataflow.rb:143:27:144:16 | [input] SSA phi read(self) |
+| local_dataflow.rb:144:15:144:15 | [post] x | local_dataflow.rb:143:27:144:16 | [input] SSA phi read(x) |
+| local_dataflow.rb:144:15:144:15 | x | local_dataflow.rb:143:27:144:16 | [input] SSA phi read(x) |
| local_dataflow.rb:147:5:147:10 | [post] self | local_dataflow.rb:148:5:148:10 | self |
| local_dataflow.rb:147:5:147:10 | self | local_dataflow.rb:148:5:148:10 | self |
| local_dataflow.rb:147:9:147:9 | [post] x | local_dataflow.rb:148:9:148:9 | x |
diff --git a/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected b/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected
index 2c189c76939d7..a90c65dab24ee 100644
--- a/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected
+++ b/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected
@@ -1591,7 +1591,9 @@
| UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2081:20:2116 | if ... | UseUseExplosion.rb:20:2076:20:2116 | then ... |
| UseUseExplosion.rb:20:2085:20:2089 | @prop | UseUseExplosion.rb:20:2085:20:2093 | ... > ... |
+| UseUseExplosion.rb:20:2085:20:2089 | [post] self | UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2085:20:2089 | [post] self | UseUseExplosion.rb:20:2107:20:2112 | self |
+| UseUseExplosion.rb:20:2085:20:2089 | self | UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2085:20:2089 | self | UseUseExplosion.rb:20:2107:20:2112 | self |
| UseUseExplosion.rb:20:2085:20:2093 | ... > ... | UseUseExplosion.rb:20:2084:20:2094 | [false] ( ... ) |
| UseUseExplosion.rb:20:2085:20:2093 | ... > ... | UseUseExplosion.rb:20:2084:20:2094 | [true] ( ... ) |
@@ -1602,403 +1604,703 @@
| UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(self) |
| UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) |
| UseUseExplosion.rb:20:2102:20:2112 | else ... | UseUseExplosion.rb:20:2081:20:2116 | if ... |
+| UseUseExplosion.rb:20:2107:20:2112 | [post] self | UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2107:20:2112 | call to use | UseUseExplosion.rb:20:2102:20:2112 | else ... |
+| UseUseExplosion.rb:20:2107:20:2112 | self | UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2111:20:2111 | x | UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) |
| UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) |
| UseUseExplosion.rb:20:2118:20:2128 | else ... | UseUseExplosion.rb:20:2061:20:2132 | if ... |
+| UseUseExplosion.rb:20:2123:20:2128 | [post] self | UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2123:20:2128 | call to use | UseUseExplosion.rb:20:2118:20:2128 | else ... |
+| UseUseExplosion.rb:20:2123:20:2128 | self | UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2127:20:2127 | x | UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) |
| UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) |
| UseUseExplosion.rb:20:2134:20:2144 | else ... | UseUseExplosion.rb:20:2041:20:2148 | if ... |
+| UseUseExplosion.rb:20:2139:20:2144 | [post] self | UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2139:20:2144 | call to use | UseUseExplosion.rb:20:2134:20:2144 | else ... |
+| UseUseExplosion.rb:20:2139:20:2144 | self | UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2143:20:2143 | x | UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) |
| UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) |
| UseUseExplosion.rb:20:2150:20:2160 | else ... | UseUseExplosion.rb:20:2021:20:2164 | if ... |
+| UseUseExplosion.rb:20:2155:20:2160 | [post] self | UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2155:20:2160 | call to use | UseUseExplosion.rb:20:2150:20:2160 | else ... |
+| UseUseExplosion.rb:20:2155:20:2160 | self | UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2159:20:2159 | x | UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) |
| UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) |
| UseUseExplosion.rb:20:2166:20:2176 | else ... | UseUseExplosion.rb:20:2001:20:2180 | if ... |
+| UseUseExplosion.rb:20:2171:20:2176 | [post] self | UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2171:20:2176 | call to use | UseUseExplosion.rb:20:2166:20:2176 | else ... |
+| UseUseExplosion.rb:20:2171:20:2176 | self | UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2175:20:2175 | x | UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) |
| UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) |
| UseUseExplosion.rb:20:2182:20:2192 | else ... | UseUseExplosion.rb:20:1981:20:2196 | if ... |
+| UseUseExplosion.rb:20:2187:20:2192 | [post] self | UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2187:20:2192 | call to use | UseUseExplosion.rb:20:2182:20:2192 | else ... |
+| UseUseExplosion.rb:20:2187:20:2192 | self | UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2191:20:2191 | x | UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) |
| UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) |
| UseUseExplosion.rb:20:2198:20:2208 | else ... | UseUseExplosion.rb:20:1961:20:2212 | if ... |
+| UseUseExplosion.rb:20:2203:20:2208 | [post] self | UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2203:20:2208 | call to use | UseUseExplosion.rb:20:2198:20:2208 | else ... |
+| UseUseExplosion.rb:20:2203:20:2208 | self | UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2207:20:2207 | x | UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) |
| UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) |
| UseUseExplosion.rb:20:2214:20:2224 | else ... | UseUseExplosion.rb:20:1941:20:2228 | if ... |
+| UseUseExplosion.rb:20:2219:20:2224 | [post] self | UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2219:20:2224 | call to use | UseUseExplosion.rb:20:2214:20:2224 | else ... |
+| UseUseExplosion.rb:20:2219:20:2224 | self | UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2223:20:2223 | x | UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) |
| UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) |
| UseUseExplosion.rb:20:2230:20:2240 | else ... | UseUseExplosion.rb:20:1921:20:2244 | if ... |
+| UseUseExplosion.rb:20:2235:20:2240 | [post] self | UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2235:20:2240 | call to use | UseUseExplosion.rb:20:2230:20:2240 | else ... |
+| UseUseExplosion.rb:20:2235:20:2240 | self | UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2239:20:2239 | x | UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) |
| UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) |
| UseUseExplosion.rb:20:2246:20:2256 | else ... | UseUseExplosion.rb:20:1900:20:2260 | if ... |
+| UseUseExplosion.rb:20:2251:20:2256 | [post] self | UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2251:20:2256 | call to use | UseUseExplosion.rb:20:2246:20:2256 | else ... |
+| UseUseExplosion.rb:20:2251:20:2256 | self | UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2255:20:2255 | x | UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) |
| UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) |
| UseUseExplosion.rb:20:2262:20:2272 | else ... | UseUseExplosion.rb:20:1879:20:2276 | if ... |
+| UseUseExplosion.rb:20:2267:20:2272 | [post] self | UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2267:20:2272 | call to use | UseUseExplosion.rb:20:2262:20:2272 | else ... |
+| UseUseExplosion.rb:20:2267:20:2272 | self | UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2271:20:2271 | x | UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) |
| UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) |
| UseUseExplosion.rb:20:2278:20:2288 | else ... | UseUseExplosion.rb:20:1858:20:2292 | if ... |
+| UseUseExplosion.rb:20:2283:20:2288 | [post] self | UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2283:20:2288 | call to use | UseUseExplosion.rb:20:2278:20:2288 | else ... |
+| UseUseExplosion.rb:20:2283:20:2288 | self | UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2287:20:2287 | x | UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) |
| UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) |
| UseUseExplosion.rb:20:2294:20:2304 | else ... | UseUseExplosion.rb:20:1837:20:2308 | if ... |
+| UseUseExplosion.rb:20:2299:20:2304 | [post] self | UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2299:20:2304 | call to use | UseUseExplosion.rb:20:2294:20:2304 | else ... |
+| UseUseExplosion.rb:20:2299:20:2304 | self | UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2303:20:2303 | x | UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) |
| UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) |
| UseUseExplosion.rb:20:2310:20:2320 | else ... | UseUseExplosion.rb:20:1816:20:2324 | if ... |
+| UseUseExplosion.rb:20:2315:20:2320 | [post] self | UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2315:20:2320 | call to use | UseUseExplosion.rb:20:2310:20:2320 | else ... |
+| UseUseExplosion.rb:20:2315:20:2320 | self | UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2319:20:2319 | x | UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) |
| UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) |
| UseUseExplosion.rb:20:2326:20:2336 | else ... | UseUseExplosion.rb:20:1795:20:2340 | if ... |
+| UseUseExplosion.rb:20:2331:20:2336 | [post] self | UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2331:20:2336 | call to use | UseUseExplosion.rb:20:2326:20:2336 | else ... |
+| UseUseExplosion.rb:20:2331:20:2336 | self | UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2335:20:2335 | x | UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) |
| UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) |
| UseUseExplosion.rb:20:2342:20:2352 | else ... | UseUseExplosion.rb:20:1774:20:2356 | if ... |
+| UseUseExplosion.rb:20:2347:20:2352 | [post] self | UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2347:20:2352 | call to use | UseUseExplosion.rb:20:2342:20:2352 | else ... |
+| UseUseExplosion.rb:20:2347:20:2352 | self | UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2351:20:2351 | x | UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) |
| UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) |
| UseUseExplosion.rb:20:2358:20:2368 | else ... | UseUseExplosion.rb:20:1753:20:2372 | if ... |
+| UseUseExplosion.rb:20:2363:20:2368 | [post] self | UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2363:20:2368 | call to use | UseUseExplosion.rb:20:2358:20:2368 | else ... |
+| UseUseExplosion.rb:20:2363:20:2368 | self | UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2367:20:2367 | x | UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) |
| UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) |
| UseUseExplosion.rb:20:2374:20:2384 | else ... | UseUseExplosion.rb:20:1732:20:2388 | if ... |
+| UseUseExplosion.rb:20:2379:20:2384 | [post] self | UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2379:20:2384 | call to use | UseUseExplosion.rb:20:2374:20:2384 | else ... |
+| UseUseExplosion.rb:20:2379:20:2384 | self | UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2383:20:2383 | x | UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) |
| UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) |
| UseUseExplosion.rb:20:2390:20:2400 | else ... | UseUseExplosion.rb:20:1711:20:2404 | if ... |
+| UseUseExplosion.rb:20:2395:20:2400 | [post] self | UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2395:20:2400 | call to use | UseUseExplosion.rb:20:2390:20:2400 | else ... |
+| UseUseExplosion.rb:20:2395:20:2400 | self | UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2399:20:2399 | x | UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) |
| UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) |
| UseUseExplosion.rb:20:2406:20:2416 | else ... | UseUseExplosion.rb:20:1690:20:2420 | if ... |
+| UseUseExplosion.rb:20:2411:20:2416 | [post] self | UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2411:20:2416 | call to use | UseUseExplosion.rb:20:2406:20:2416 | else ... |
+| UseUseExplosion.rb:20:2411:20:2416 | self | UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2415:20:2415 | x | UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) |
| UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) |
| UseUseExplosion.rb:20:2422:20:2432 | else ... | UseUseExplosion.rb:20:1669:20:2436 | if ... |
+| UseUseExplosion.rb:20:2427:20:2432 | [post] self | UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2427:20:2432 | call to use | UseUseExplosion.rb:20:2422:20:2432 | else ... |
+| UseUseExplosion.rb:20:2427:20:2432 | self | UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2431:20:2431 | x | UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) |
| UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) |
| UseUseExplosion.rb:20:2438:20:2448 | else ... | UseUseExplosion.rb:20:1648:20:2452 | if ... |
+| UseUseExplosion.rb:20:2443:20:2448 | [post] self | UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2443:20:2448 | call to use | UseUseExplosion.rb:20:2438:20:2448 | else ... |
+| UseUseExplosion.rb:20:2443:20:2448 | self | UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2447:20:2447 | x | UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) |
| UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) |
| UseUseExplosion.rb:20:2454:20:2464 | else ... | UseUseExplosion.rb:20:1627:20:2468 | if ... |
+| UseUseExplosion.rb:20:2459:20:2464 | [post] self | UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2459:20:2464 | call to use | UseUseExplosion.rb:20:2454:20:2464 | else ... |
+| UseUseExplosion.rb:20:2459:20:2464 | self | UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2463:20:2463 | x | UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) |
| UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) |
| UseUseExplosion.rb:20:2470:20:2480 | else ... | UseUseExplosion.rb:20:1606:20:2484 | if ... |
+| UseUseExplosion.rb:20:2475:20:2480 | [post] self | UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2475:20:2480 | call to use | UseUseExplosion.rb:20:2470:20:2480 | else ... |
+| UseUseExplosion.rb:20:2475:20:2480 | self | UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2479:20:2479 | x | UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) |
| UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) |
| UseUseExplosion.rb:20:2486:20:2496 | else ... | UseUseExplosion.rb:20:1585:20:2500 | if ... |
+| UseUseExplosion.rb:20:2491:20:2496 | [post] self | UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2491:20:2496 | call to use | UseUseExplosion.rb:20:2486:20:2496 | else ... |
+| UseUseExplosion.rb:20:2491:20:2496 | self | UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2495:20:2495 | x | UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) |
| UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) |
| UseUseExplosion.rb:20:2502:20:2512 | else ... | UseUseExplosion.rb:20:1564:20:2516 | if ... |
+| UseUseExplosion.rb:20:2507:20:2512 | [post] self | UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2507:20:2512 | call to use | UseUseExplosion.rb:20:2502:20:2512 | else ... |
+| UseUseExplosion.rb:20:2507:20:2512 | self | UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2511:20:2511 | x | UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) |
| UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) |
| UseUseExplosion.rb:20:2518:20:2528 | else ... | UseUseExplosion.rb:20:1543:20:2532 | if ... |
+| UseUseExplosion.rb:20:2523:20:2528 | [post] self | UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2523:20:2528 | call to use | UseUseExplosion.rb:20:2518:20:2528 | else ... |
+| UseUseExplosion.rb:20:2523:20:2528 | self | UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2527:20:2527 | x | UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) |
| UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) |
| UseUseExplosion.rb:20:2534:20:2544 | else ... | UseUseExplosion.rb:20:1522:20:2548 | if ... |
+| UseUseExplosion.rb:20:2539:20:2544 | [post] self | UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2539:20:2544 | call to use | UseUseExplosion.rb:20:2534:20:2544 | else ... |
+| UseUseExplosion.rb:20:2539:20:2544 | self | UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2543:20:2543 | x | UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) |
| UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) |
| UseUseExplosion.rb:20:2550:20:2560 | else ... | UseUseExplosion.rb:20:1501:20:2564 | if ... |
+| UseUseExplosion.rb:20:2555:20:2560 | [post] self | UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2555:20:2560 | call to use | UseUseExplosion.rb:20:2550:20:2560 | else ... |
+| UseUseExplosion.rb:20:2555:20:2560 | self | UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2559:20:2559 | x | UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) |
| UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) |
| UseUseExplosion.rb:20:2566:20:2576 | else ... | UseUseExplosion.rb:20:1480:20:2580 | if ... |
+| UseUseExplosion.rb:20:2571:20:2576 | [post] self | UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2571:20:2576 | call to use | UseUseExplosion.rb:20:2566:20:2576 | else ... |
+| UseUseExplosion.rb:20:2571:20:2576 | self | UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2575:20:2575 | x | UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) |
| UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) |
| UseUseExplosion.rb:20:2582:20:2592 | else ... | UseUseExplosion.rb:20:1459:20:2596 | if ... |
+| UseUseExplosion.rb:20:2587:20:2592 | [post] self | UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2587:20:2592 | call to use | UseUseExplosion.rb:20:2582:20:2592 | else ... |
+| UseUseExplosion.rb:20:2587:20:2592 | self | UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2591:20:2591 | x | UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) |
| UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) |
| UseUseExplosion.rb:20:2598:20:2608 | else ... | UseUseExplosion.rb:20:1438:20:2612 | if ... |
+| UseUseExplosion.rb:20:2603:20:2608 | [post] self | UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2603:20:2608 | call to use | UseUseExplosion.rb:20:2598:20:2608 | else ... |
+| UseUseExplosion.rb:20:2603:20:2608 | self | UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2607:20:2607 | x | UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) |
| UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) |
| UseUseExplosion.rb:20:2614:20:2624 | else ... | UseUseExplosion.rb:20:1417:20:2628 | if ... |
+| UseUseExplosion.rb:20:2619:20:2624 | [post] self | UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2619:20:2624 | call to use | UseUseExplosion.rb:20:2614:20:2624 | else ... |
+| UseUseExplosion.rb:20:2619:20:2624 | self | UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2623:20:2623 | x | UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) |
| UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) |
| UseUseExplosion.rb:20:2630:20:2640 | else ... | UseUseExplosion.rb:20:1396:20:2644 | if ... |
+| UseUseExplosion.rb:20:2635:20:2640 | [post] self | UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2635:20:2640 | call to use | UseUseExplosion.rb:20:2630:20:2640 | else ... |
+| UseUseExplosion.rb:20:2635:20:2640 | self | UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2639:20:2639 | x | UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) |
| UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) |
| UseUseExplosion.rb:20:2646:20:2656 | else ... | UseUseExplosion.rb:20:1375:20:2660 | if ... |
+| UseUseExplosion.rb:20:2651:20:2656 | [post] self | UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2651:20:2656 | call to use | UseUseExplosion.rb:20:2646:20:2656 | else ... |
+| UseUseExplosion.rb:20:2651:20:2656 | self | UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2655:20:2655 | x | UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) |
| UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) |
| UseUseExplosion.rb:20:2662:20:2672 | else ... | UseUseExplosion.rb:20:1354:20:2676 | if ... |
+| UseUseExplosion.rb:20:2667:20:2672 | [post] self | UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2667:20:2672 | call to use | UseUseExplosion.rb:20:2662:20:2672 | else ... |
+| UseUseExplosion.rb:20:2667:20:2672 | self | UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2671:20:2671 | x | UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) |
| UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) |
| UseUseExplosion.rb:20:2678:20:2688 | else ... | UseUseExplosion.rb:20:1333:20:2692 | if ... |
+| UseUseExplosion.rb:20:2683:20:2688 | [post] self | UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2683:20:2688 | call to use | UseUseExplosion.rb:20:2678:20:2688 | else ... |
+| UseUseExplosion.rb:20:2683:20:2688 | self | UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2687:20:2687 | x | UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) |
| UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) |
| UseUseExplosion.rb:20:2694:20:2704 | else ... | UseUseExplosion.rb:20:1312:20:2708 | if ... |
+| UseUseExplosion.rb:20:2699:20:2704 | [post] self | UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2699:20:2704 | call to use | UseUseExplosion.rb:20:2694:20:2704 | else ... |
+| UseUseExplosion.rb:20:2699:20:2704 | self | UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2703:20:2703 | x | UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) |
| UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) |
| UseUseExplosion.rb:20:2710:20:2720 | else ... | UseUseExplosion.rb:20:1291:20:2724 | if ... |
+| UseUseExplosion.rb:20:2715:20:2720 | [post] self | UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2715:20:2720 | call to use | UseUseExplosion.rb:20:2710:20:2720 | else ... |
+| UseUseExplosion.rb:20:2715:20:2720 | self | UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2719:20:2719 | x | UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) |
| UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) |
| UseUseExplosion.rb:20:2726:20:2736 | else ... | UseUseExplosion.rb:20:1270:20:2740 | if ... |
+| UseUseExplosion.rb:20:2731:20:2736 | [post] self | UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2731:20:2736 | call to use | UseUseExplosion.rb:20:2726:20:2736 | else ... |
+| UseUseExplosion.rb:20:2731:20:2736 | self | UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2735:20:2735 | x | UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) |
| UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) |
| UseUseExplosion.rb:20:2742:20:2752 | else ... | UseUseExplosion.rb:20:1249:20:2756 | if ... |
+| UseUseExplosion.rb:20:2747:20:2752 | [post] self | UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2747:20:2752 | call to use | UseUseExplosion.rb:20:2742:20:2752 | else ... |
+| UseUseExplosion.rb:20:2747:20:2752 | self | UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2751:20:2751 | x | UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) |
| UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) |
| UseUseExplosion.rb:20:2758:20:2768 | else ... | UseUseExplosion.rb:20:1228:20:2772 | if ... |
+| UseUseExplosion.rb:20:2763:20:2768 | [post] self | UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2763:20:2768 | call to use | UseUseExplosion.rb:20:2758:20:2768 | else ... |
+| UseUseExplosion.rb:20:2763:20:2768 | self | UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2767:20:2767 | x | UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) |
| UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) |
| UseUseExplosion.rb:20:2774:20:2784 | else ... | UseUseExplosion.rb:20:1207:20:2788 | if ... |
+| UseUseExplosion.rb:20:2779:20:2784 | [post] self | UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2779:20:2784 | call to use | UseUseExplosion.rb:20:2774:20:2784 | else ... |
+| UseUseExplosion.rb:20:2779:20:2784 | self | UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2783:20:2783 | x | UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) |
| UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) |
| UseUseExplosion.rb:20:2790:20:2800 | else ... | UseUseExplosion.rb:20:1186:20:2804 | if ... |
+| UseUseExplosion.rb:20:2795:20:2800 | [post] self | UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2795:20:2800 | call to use | UseUseExplosion.rb:20:2790:20:2800 | else ... |
+| UseUseExplosion.rb:20:2795:20:2800 | self | UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2799:20:2799 | x | UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) |
| UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) |
| UseUseExplosion.rb:20:2806:20:2816 | else ... | UseUseExplosion.rb:20:1165:20:2820 | if ... |
+| UseUseExplosion.rb:20:2811:20:2816 | [post] self | UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2811:20:2816 | call to use | UseUseExplosion.rb:20:2806:20:2816 | else ... |
+| UseUseExplosion.rb:20:2811:20:2816 | self | UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2815:20:2815 | x | UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) |
| UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) |
| UseUseExplosion.rb:20:2822:20:2832 | else ... | UseUseExplosion.rb:20:1144:20:2836 | if ... |
+| UseUseExplosion.rb:20:2827:20:2832 | [post] self | UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2827:20:2832 | call to use | UseUseExplosion.rb:20:2822:20:2832 | else ... |
+| UseUseExplosion.rb:20:2827:20:2832 | self | UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2831:20:2831 | x | UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) |
| UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) |
| UseUseExplosion.rb:20:2838:20:2848 | else ... | UseUseExplosion.rb:20:1123:20:2852 | if ... |
+| UseUseExplosion.rb:20:2843:20:2848 | [post] self | UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2843:20:2848 | call to use | UseUseExplosion.rb:20:2838:20:2848 | else ... |
+| UseUseExplosion.rb:20:2843:20:2848 | self | UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2847:20:2847 | x | UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) |
| UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) |
| UseUseExplosion.rb:20:2854:20:2864 | else ... | UseUseExplosion.rb:20:1102:20:2868 | if ... |
+| UseUseExplosion.rb:20:2859:20:2864 | [post] self | UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2859:20:2864 | call to use | UseUseExplosion.rb:20:2854:20:2864 | else ... |
+| UseUseExplosion.rb:20:2859:20:2864 | self | UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2863:20:2863 | x | UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) |
| UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) |
| UseUseExplosion.rb:20:2870:20:2880 | else ... | UseUseExplosion.rb:20:1081:20:2884 | if ... |
+| UseUseExplosion.rb:20:2875:20:2880 | [post] self | UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2875:20:2880 | call to use | UseUseExplosion.rb:20:2870:20:2880 | else ... |
+| UseUseExplosion.rb:20:2875:20:2880 | self | UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2879:20:2879 | x | UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) |
| UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) |
| UseUseExplosion.rb:20:2886:20:2896 | else ... | UseUseExplosion.rb:20:1060:20:2900 | if ... |
+| UseUseExplosion.rb:20:2891:20:2896 | [post] self | UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2891:20:2896 | call to use | UseUseExplosion.rb:20:2886:20:2896 | else ... |
+| UseUseExplosion.rb:20:2891:20:2896 | self | UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2895:20:2895 | x | UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) |
| UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) |
| UseUseExplosion.rb:20:2902:20:2912 | else ... | UseUseExplosion.rb:20:1039:20:2916 | if ... |
+| UseUseExplosion.rb:20:2907:20:2912 | [post] self | UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2907:20:2912 | call to use | UseUseExplosion.rb:20:2902:20:2912 | else ... |
+| UseUseExplosion.rb:20:2907:20:2912 | self | UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2911:20:2911 | x | UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) |
| UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) |
| UseUseExplosion.rb:20:2918:20:2928 | else ... | UseUseExplosion.rb:20:1018:20:2932 | if ... |
+| UseUseExplosion.rb:20:2923:20:2928 | [post] self | UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2923:20:2928 | call to use | UseUseExplosion.rb:20:2918:20:2928 | else ... |
+| UseUseExplosion.rb:20:2923:20:2928 | self | UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2927:20:2927 | x | UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(self) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) |
| UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(x) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) |
| UseUseExplosion.rb:20:2934:20:2944 | else ... | UseUseExplosion.rb:20:997:20:2948 | if ... |
+| UseUseExplosion.rb:20:2939:20:2944 | [post] self | UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2939:20:2944 | call to use | UseUseExplosion.rb:20:2934:20:2944 | else ... |
+| UseUseExplosion.rb:20:2939:20:2944 | self | UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2943:20:2943 | x | UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(self) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) |
| UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(x) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) |
| UseUseExplosion.rb:20:2950:20:2960 | else ... | UseUseExplosion.rb:20:976:20:2964 | if ... |
+| UseUseExplosion.rb:20:2955:20:2960 | [post] self | UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2955:20:2960 | call to use | UseUseExplosion.rb:20:2950:20:2960 | else ... |
+| UseUseExplosion.rb:20:2955:20:2960 | self | UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2959:20:2959 | x | UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(self) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) |
| UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(x) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) |
| UseUseExplosion.rb:20:2966:20:2976 | else ... | UseUseExplosion.rb:20:955:20:2980 | if ... |
+| UseUseExplosion.rb:20:2971:20:2976 | [post] self | UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2971:20:2976 | call to use | UseUseExplosion.rb:20:2966:20:2976 | else ... |
+| UseUseExplosion.rb:20:2971:20:2976 | self | UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2975:20:2975 | x | UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(self) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) |
| UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(x) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) |
| UseUseExplosion.rb:20:2982:20:2992 | else ... | UseUseExplosion.rb:20:934:20:2996 | if ... |
+| UseUseExplosion.rb:20:2987:20:2992 | [post] self | UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:2987:20:2992 | call to use | UseUseExplosion.rb:20:2982:20:2992 | else ... |
+| UseUseExplosion.rb:20:2987:20:2992 | self | UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:2991:20:2991 | x | UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(self) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) |
| UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(x) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) |
| UseUseExplosion.rb:20:2998:20:3008 | else ... | UseUseExplosion.rb:20:913:20:3012 | if ... |
+| UseUseExplosion.rb:20:3003:20:3008 | [post] self | UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3003:20:3008 | call to use | UseUseExplosion.rb:20:2998:20:3008 | else ... |
+| UseUseExplosion.rb:20:3003:20:3008 | self | UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3007:20:3007 | x | UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(self) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) |
| UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(x) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) |
| UseUseExplosion.rb:20:3014:20:3024 | else ... | UseUseExplosion.rb:20:892:20:3028 | if ... |
+| UseUseExplosion.rb:20:3019:20:3024 | [post] self | UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3019:20:3024 | call to use | UseUseExplosion.rb:20:3014:20:3024 | else ... |
+| UseUseExplosion.rb:20:3019:20:3024 | self | UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3023:20:3023 | x | UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(self) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) |
| UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(x) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) |
| UseUseExplosion.rb:20:3030:20:3040 | else ... | UseUseExplosion.rb:20:871:20:3044 | if ... |
+| UseUseExplosion.rb:20:3035:20:3040 | [post] self | UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3035:20:3040 | call to use | UseUseExplosion.rb:20:3030:20:3040 | else ... |
+| UseUseExplosion.rb:20:3035:20:3040 | self | UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3039:20:3039 | x | UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(self) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) |
| UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(x) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) |
| UseUseExplosion.rb:20:3046:20:3056 | else ... | UseUseExplosion.rb:20:850:20:3060 | if ... |
+| UseUseExplosion.rb:20:3051:20:3056 | [post] self | UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3051:20:3056 | call to use | UseUseExplosion.rb:20:3046:20:3056 | else ... |
+| UseUseExplosion.rb:20:3051:20:3056 | self | UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3055:20:3055 | x | UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(self) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) |
| UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(x) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) |
| UseUseExplosion.rb:20:3062:20:3072 | else ... | UseUseExplosion.rb:20:829:20:3076 | if ... |
+| UseUseExplosion.rb:20:3067:20:3072 | [post] self | UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3067:20:3072 | call to use | UseUseExplosion.rb:20:3062:20:3072 | else ... |
+| UseUseExplosion.rb:20:3067:20:3072 | self | UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3071:20:3071 | x | UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(self) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) |
| UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(x) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) |
| UseUseExplosion.rb:20:3078:20:3088 | else ... | UseUseExplosion.rb:20:808:20:3092 | if ... |
+| UseUseExplosion.rb:20:3083:20:3088 | [post] self | UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3083:20:3088 | call to use | UseUseExplosion.rb:20:3078:20:3088 | else ... |
+| UseUseExplosion.rb:20:3083:20:3088 | self | UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3087:20:3087 | x | UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(self) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) |
| UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(x) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) |
| UseUseExplosion.rb:20:3094:20:3104 | else ... | UseUseExplosion.rb:20:787:20:3108 | if ... |
+| UseUseExplosion.rb:20:3099:20:3104 | [post] self | UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3099:20:3104 | call to use | UseUseExplosion.rb:20:3094:20:3104 | else ... |
+| UseUseExplosion.rb:20:3099:20:3104 | self | UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3103:20:3103 | x | UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(self) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) |
| UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(x) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) |
| UseUseExplosion.rb:20:3110:20:3120 | else ... | UseUseExplosion.rb:20:766:20:3124 | if ... |
+| UseUseExplosion.rb:20:3115:20:3120 | [post] self | UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3115:20:3120 | call to use | UseUseExplosion.rb:20:3110:20:3120 | else ... |
+| UseUseExplosion.rb:20:3115:20:3120 | self | UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3119:20:3119 | x | UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(self) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) |
| UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(x) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) |
| UseUseExplosion.rb:20:3126:20:3136 | else ... | UseUseExplosion.rb:20:745:20:3140 | if ... |
+| UseUseExplosion.rb:20:3131:20:3136 | [post] self | UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3131:20:3136 | call to use | UseUseExplosion.rb:20:3126:20:3136 | else ... |
+| UseUseExplosion.rb:20:3131:20:3136 | self | UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3135:20:3135 | x | UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(self) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) |
| UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(x) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) |
| UseUseExplosion.rb:20:3142:20:3152 | else ... | UseUseExplosion.rb:20:724:20:3156 | if ... |
+| UseUseExplosion.rb:20:3147:20:3152 | [post] self | UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3147:20:3152 | call to use | UseUseExplosion.rb:20:3142:20:3152 | else ... |
+| UseUseExplosion.rb:20:3147:20:3152 | self | UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3151:20:3151 | x | UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(self) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) |
| UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(x) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) |
| UseUseExplosion.rb:20:3158:20:3168 | else ... | UseUseExplosion.rb:20:703:20:3172 | if ... |
+| UseUseExplosion.rb:20:3163:20:3168 | [post] self | UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3163:20:3168 | call to use | UseUseExplosion.rb:20:3158:20:3168 | else ... |
+| UseUseExplosion.rb:20:3163:20:3168 | self | UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3167:20:3167 | x | UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(self) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) |
| UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(x) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) |
| UseUseExplosion.rb:20:3174:20:3184 | else ... | UseUseExplosion.rb:20:682:20:3188 | if ... |
+| UseUseExplosion.rb:20:3179:20:3184 | [post] self | UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3179:20:3184 | call to use | UseUseExplosion.rb:20:3174:20:3184 | else ... |
+| UseUseExplosion.rb:20:3179:20:3184 | self | UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3183:20:3183 | x | UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(self) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) |
| UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(x) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) |
| UseUseExplosion.rb:20:3190:20:3200 | else ... | UseUseExplosion.rb:20:661:20:3204 | if ... |
+| UseUseExplosion.rb:20:3195:20:3200 | [post] self | UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3195:20:3200 | call to use | UseUseExplosion.rb:20:3190:20:3200 | else ... |
+| UseUseExplosion.rb:20:3195:20:3200 | self | UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3199:20:3199 | x | UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(self) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) |
| UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(x) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) |
| UseUseExplosion.rb:20:3206:20:3216 | else ... | UseUseExplosion.rb:20:640:20:3220 | if ... |
+| UseUseExplosion.rb:20:3211:20:3216 | [post] self | UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3211:20:3216 | call to use | UseUseExplosion.rb:20:3206:20:3216 | else ... |
+| UseUseExplosion.rb:20:3211:20:3216 | self | UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3215:20:3215 | x | UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(self) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) |
| UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(x) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) |
| UseUseExplosion.rb:20:3222:20:3232 | else ... | UseUseExplosion.rb:20:619:20:3236 | if ... |
+| UseUseExplosion.rb:20:3227:20:3232 | [post] self | UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3227:20:3232 | call to use | UseUseExplosion.rb:20:3222:20:3232 | else ... |
+| UseUseExplosion.rb:20:3227:20:3232 | self | UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3231:20:3231 | x | UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(self) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) |
| UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(x) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) |
| UseUseExplosion.rb:20:3238:20:3248 | else ... | UseUseExplosion.rb:20:598:20:3252 | if ... |
+| UseUseExplosion.rb:20:3243:20:3248 | [post] self | UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3243:20:3248 | call to use | UseUseExplosion.rb:20:3238:20:3248 | else ... |
+| UseUseExplosion.rb:20:3243:20:3248 | self | UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3247:20:3247 | x | UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(self) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) |
| UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(x) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) |
| UseUseExplosion.rb:20:3254:20:3264 | else ... | UseUseExplosion.rb:20:577:20:3268 | if ... |
+| UseUseExplosion.rb:20:3259:20:3264 | [post] self | UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3259:20:3264 | call to use | UseUseExplosion.rb:20:3254:20:3264 | else ... |
+| UseUseExplosion.rb:20:3259:20:3264 | self | UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3263:20:3263 | x | UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(self) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) |
| UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(x) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) |
| UseUseExplosion.rb:20:3270:20:3280 | else ... | UseUseExplosion.rb:20:556:20:3284 | if ... |
+| UseUseExplosion.rb:20:3275:20:3280 | [post] self | UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3275:20:3280 | call to use | UseUseExplosion.rb:20:3270:20:3280 | else ... |
+| UseUseExplosion.rb:20:3275:20:3280 | self | UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3279:20:3279 | x | UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(self) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) |
| UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(x) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) |
| UseUseExplosion.rb:20:3286:20:3296 | else ... | UseUseExplosion.rb:20:535:20:3300 | if ... |
+| UseUseExplosion.rb:20:3291:20:3296 | [post] self | UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3291:20:3296 | call to use | UseUseExplosion.rb:20:3286:20:3296 | else ... |
+| UseUseExplosion.rb:20:3291:20:3296 | self | UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3295:20:3295 | x | UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(self) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) |
| UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(x) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) |
| UseUseExplosion.rb:20:3302:20:3312 | else ... | UseUseExplosion.rb:20:514:20:3316 | if ... |
+| UseUseExplosion.rb:20:3307:20:3312 | [post] self | UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3307:20:3312 | call to use | UseUseExplosion.rb:20:3302:20:3312 | else ... |
+| UseUseExplosion.rb:20:3307:20:3312 | self | UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3311:20:3311 | x | UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(self) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) |
| UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(x) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) |
| UseUseExplosion.rb:20:3318:20:3328 | else ... | UseUseExplosion.rb:20:493:20:3332 | if ... |
+| UseUseExplosion.rb:20:3323:20:3328 | [post] self | UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3323:20:3328 | call to use | UseUseExplosion.rb:20:3318:20:3328 | else ... |
+| UseUseExplosion.rb:20:3323:20:3328 | self | UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3327:20:3327 | x | UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(self) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) |
| UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(x) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) |
| UseUseExplosion.rb:20:3334:20:3344 | else ... | UseUseExplosion.rb:20:472:20:3348 | if ... |
+| UseUseExplosion.rb:20:3339:20:3344 | [post] self | UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3339:20:3344 | call to use | UseUseExplosion.rb:20:3334:20:3344 | else ... |
+| UseUseExplosion.rb:20:3339:20:3344 | self | UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3343:20:3343 | x | UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(self) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) |
| UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(x) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) |
| UseUseExplosion.rb:20:3350:20:3360 | else ... | UseUseExplosion.rb:20:451:20:3364 | if ... |
+| UseUseExplosion.rb:20:3355:20:3360 | [post] self | UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3355:20:3360 | call to use | UseUseExplosion.rb:20:3350:20:3360 | else ... |
+| UseUseExplosion.rb:20:3355:20:3360 | self | UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3359:20:3359 | x | UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(self) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) |
| UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(x) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) |
| UseUseExplosion.rb:20:3366:20:3376 | else ... | UseUseExplosion.rb:20:430:20:3380 | if ... |
+| UseUseExplosion.rb:20:3371:20:3376 | [post] self | UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3371:20:3376 | call to use | UseUseExplosion.rb:20:3366:20:3376 | else ... |
+| UseUseExplosion.rb:20:3371:20:3376 | self | UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3375:20:3375 | x | UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(self) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) |
| UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(x) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) |
| UseUseExplosion.rb:20:3382:20:3392 | else ... | UseUseExplosion.rb:20:409:20:3396 | if ... |
+| UseUseExplosion.rb:20:3387:20:3392 | [post] self | UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3387:20:3392 | call to use | UseUseExplosion.rb:20:3382:20:3392 | else ... |
+| UseUseExplosion.rb:20:3387:20:3392 | self | UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3391:20:3391 | x | UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(self) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) |
| UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(x) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) |
| UseUseExplosion.rb:20:3398:20:3408 | else ... | UseUseExplosion.rb:20:388:20:3412 | if ... |
+| UseUseExplosion.rb:20:3403:20:3408 | [post] self | UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3403:20:3408 | call to use | UseUseExplosion.rb:20:3398:20:3408 | else ... |
+| UseUseExplosion.rb:20:3403:20:3408 | self | UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3407:20:3407 | x | UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(self) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) |
| UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(x) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) |
| UseUseExplosion.rb:20:3414:20:3424 | else ... | UseUseExplosion.rb:20:367:20:3428 | if ... |
+| UseUseExplosion.rb:20:3419:20:3424 | [post] self | UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3419:20:3424 | call to use | UseUseExplosion.rb:20:3414:20:3424 | else ... |
+| UseUseExplosion.rb:20:3419:20:3424 | self | UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3423:20:3423 | x | UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(self) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) |
| UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(x) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) |
| UseUseExplosion.rb:20:3430:20:3440 | else ... | UseUseExplosion.rb:20:346:20:3444 | if ... |
+| UseUseExplosion.rb:20:3435:20:3440 | [post] self | UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3435:20:3440 | call to use | UseUseExplosion.rb:20:3430:20:3440 | else ... |
+| UseUseExplosion.rb:20:3435:20:3440 | self | UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3439:20:3439 | x | UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(self) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) |
| UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(x) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) |
| UseUseExplosion.rb:20:3446:20:3456 | else ... | UseUseExplosion.rb:20:325:20:3460 | if ... |
+| UseUseExplosion.rb:20:3451:20:3456 | [post] self | UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3451:20:3456 | call to use | UseUseExplosion.rb:20:3446:20:3456 | else ... |
+| UseUseExplosion.rb:20:3451:20:3456 | self | UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3455:20:3455 | x | UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(self) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) |
| UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(x) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) |
| UseUseExplosion.rb:20:3462:20:3472 | else ... | UseUseExplosion.rb:20:304:20:3476 | if ... |
+| UseUseExplosion.rb:20:3467:20:3472 | [post] self | UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3467:20:3472 | call to use | UseUseExplosion.rb:20:3462:20:3472 | else ... |
+| UseUseExplosion.rb:20:3467:20:3472 | self | UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3471:20:3471 | x | UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(self) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) |
| UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(x) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) |
| UseUseExplosion.rb:20:3478:20:3488 | else ... | UseUseExplosion.rb:20:283:20:3492 | if ... |
+| UseUseExplosion.rb:20:3483:20:3488 | [post] self | UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3483:20:3488 | call to use | UseUseExplosion.rb:20:3478:20:3488 | else ... |
+| UseUseExplosion.rb:20:3483:20:3488 | self | UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3487:20:3487 | x | UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(self) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) |
| UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(x) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) |
| UseUseExplosion.rb:20:3494:20:3504 | else ... | UseUseExplosion.rb:20:262:20:3508 | if ... |
+| UseUseExplosion.rb:20:3499:20:3504 | [post] self | UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3499:20:3504 | call to use | UseUseExplosion.rb:20:3494:20:3504 | else ... |
+| UseUseExplosion.rb:20:3499:20:3504 | self | UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3503:20:3503 | x | UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(self) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) |
| UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(x) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) |
| UseUseExplosion.rb:20:3510:20:3520 | else ... | UseUseExplosion.rb:20:241:20:3524 | if ... |
+| UseUseExplosion.rb:20:3515:20:3520 | [post] self | UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3515:20:3520 | call to use | UseUseExplosion.rb:20:3510:20:3520 | else ... |
+| UseUseExplosion.rb:20:3515:20:3520 | self | UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3519:20:3519 | x | UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(self) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) |
| UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(x) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) |
| UseUseExplosion.rb:20:3526:20:3536 | else ... | UseUseExplosion.rb:20:220:20:3540 | if ... |
+| UseUseExplosion.rb:20:3531:20:3536 | [post] self | UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3531:20:3536 | call to use | UseUseExplosion.rb:20:3526:20:3536 | else ... |
+| UseUseExplosion.rb:20:3531:20:3536 | self | UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3535:20:3535 | x | UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(self) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) |
| UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(x) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) |
| UseUseExplosion.rb:20:3542:20:3552 | else ... | UseUseExplosion.rb:20:199:20:3556 | if ... |
+| UseUseExplosion.rb:20:3547:20:3552 | [post] self | UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3547:20:3552 | call to use | UseUseExplosion.rb:20:3542:20:3552 | else ... |
+| UseUseExplosion.rb:20:3547:20:3552 | self | UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3551:20:3551 | x | UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(self) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) |
| UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(x) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) |
| UseUseExplosion.rb:20:3558:20:3568 | else ... | UseUseExplosion.rb:20:178:20:3572 | if ... |
+| UseUseExplosion.rb:20:3563:20:3568 | [post] self | UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3563:20:3568 | call to use | UseUseExplosion.rb:20:3558:20:3568 | else ... |
+| UseUseExplosion.rb:20:3563:20:3568 | self | UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3567:20:3567 | x | UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(self) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) |
| UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(x) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) |
| UseUseExplosion.rb:20:3574:20:3584 | else ... | UseUseExplosion.rb:20:157:20:3588 | if ... |
+| UseUseExplosion.rb:20:3579:20:3584 | [post] self | UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3579:20:3584 | call to use | UseUseExplosion.rb:20:3574:20:3584 | else ... |
+| UseUseExplosion.rb:20:3579:20:3584 | self | UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3583:20:3583 | x | UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(self) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) |
| UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(x) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) |
| UseUseExplosion.rb:20:3590:20:3600 | else ... | UseUseExplosion.rb:20:136:20:3604 | if ... |
+| UseUseExplosion.rb:20:3595:20:3600 | [post] self | UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3595:20:3600 | call to use | UseUseExplosion.rb:20:3590:20:3600 | else ... |
+| UseUseExplosion.rb:20:3595:20:3600 | self | UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3599:20:3599 | x | UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(self) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) |
| UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(x) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) |
| UseUseExplosion.rb:20:3606:20:3616 | else ... | UseUseExplosion.rb:20:115:20:3620 | if ... |
+| UseUseExplosion.rb:20:3611:20:3616 | [post] self | UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3611:20:3616 | call to use | UseUseExplosion.rb:20:3606:20:3616 | else ... |
+| UseUseExplosion.rb:20:3611:20:3616 | self | UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3615:20:3615 | x | UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(self) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) |
| UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(x) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) |
| UseUseExplosion.rb:20:3622:20:3632 | else ... | UseUseExplosion.rb:20:94:20:3636 | if ... |
+| UseUseExplosion.rb:20:3627:20:3632 | [post] self | UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3627:20:3632 | call to use | UseUseExplosion.rb:20:3622:20:3632 | else ... |
+| UseUseExplosion.rb:20:3627:20:3632 | self | UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3631:20:3631 | x | UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(self) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) |
| UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(x) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) |
| UseUseExplosion.rb:20:3638:20:3648 | else ... | UseUseExplosion.rb:20:73:20:3652 | if ... |
+| UseUseExplosion.rb:20:3643:20:3648 | [post] self | UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3643:20:3648 | call to use | UseUseExplosion.rb:20:3638:20:3648 | else ... |
+| UseUseExplosion.rb:20:3643:20:3648 | self | UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3647:20:3647 | x | UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(self) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) |
| UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(x) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) |
| UseUseExplosion.rb:20:3654:20:3664 | else ... | UseUseExplosion.rb:20:52:20:3668 | if ... |
+| UseUseExplosion.rb:20:3659:20:3664 | [post] self | UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3659:20:3664 | call to use | UseUseExplosion.rb:20:3654:20:3664 | else ... |
+| UseUseExplosion.rb:20:3659:20:3664 | self | UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3663:20:3663 | x | UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(self) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) |
| UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(x) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) |
| UseUseExplosion.rb:20:3670:20:3680 | else ... | UseUseExplosion.rb:20:31:20:3684 | if ... |
+| UseUseExplosion.rb:20:3675:20:3680 | [post] self | UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3675:20:3680 | call to use | UseUseExplosion.rb:20:3670:20:3680 | else ... |
+| UseUseExplosion.rb:20:3675:20:3680 | self | UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3679:20:3679 | x | UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(x) |
| UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(self) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(self) |
| UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(x) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) |
| UseUseExplosion.rb:20:3686:20:3696 | else ... | UseUseExplosion.rb:20:9:20:3700 | if ... |
+| UseUseExplosion.rb:20:3691:20:3696 | [post] self | UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(self) |
| UseUseExplosion.rb:20:3691:20:3696 | call to use | UseUseExplosion.rb:20:3686:20:3696 | else ... |
+| UseUseExplosion.rb:20:3691:20:3696 | self | UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(self) |
+| UseUseExplosion.rb:20:3695:20:3695 | x | UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(x) |
| UseUseExplosion.rb:21:13:21:17 | @prop | UseUseExplosion.rb:21:13:21:23 | ... > ... |
| UseUseExplosion.rb:21:13:21:17 | [post] self | UseUseExplosion.rb:21:35:21:39 | self |
| UseUseExplosion.rb:21:13:21:17 | [post] self | UseUseExplosion.rb:21:3691:21:3696 | self |
@@ -3291,11 +3593,13 @@
| local_dataflow.rb:10:9:10:9 | ... = ... | local_dataflow.rb:10:9:10:9 | if ... |
| local_dataflow.rb:10:9:10:9 | [input] phi | local_dataflow.rb:10:9:10:9 | phi |
| local_dataflow.rb:10:9:10:9 | [input] phi | local_dataflow.rb:10:9:10:9 | phi |
+| local_dataflow.rb:10:9:10:9 | [post] x | local_dataflow.rb:10:9:10:9 | [input] phi |
| 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 | [input] phi |
+| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | [input] phi |
| 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:12:5:12:5 | x |
| local_dataflow.rb:10:14:10:18 | [post] array | local_dataflow.rb:15:10:15:14 | array |
@@ -3312,11 +3616,13 @@
| local_dataflow.rb:15:5:15:5 | ... = ... | local_dataflow.rb:15:5:15:5 | if ... |
| local_dataflow.rb:15:5:15:5 | [input] phi | local_dataflow.rb:15:5:15:5 | phi |
| local_dataflow.rb:15:5:15:5 | [input] phi | local_dataflow.rb:15:5:15:5 | phi |
+| local_dataflow.rb:15:5:15:5 | [post] x | local_dataflow.rb:15:5:15:5 | [input] phi |
| 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 | [input] phi |
+| local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | [input] phi |
| local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | defined? ... |
| 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 |
@@ -3330,11 +3636,13 @@
| local_dataflow.rb:19:5:19:5 | ... = ... | local_dataflow.rb:19:5:19:5 | if ... |
| local_dataflow.rb:19:5:19:5 | [input] phi | local_dataflow.rb:19:5:19:5 | phi |
| local_dataflow.rb:19:5:19:5 | [input] phi | local_dataflow.rb:19:5:19:5 | phi |
+| local_dataflow.rb:19:5:19:5 | [post] x | local_dataflow.rb:19:5:19:5 | [input] phi |
| 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 | [input] phi |
+| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | [input] phi |
| 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:20:6:20:6 | x |
| local_dataflow.rb:20:6:20:6 | x | local_dataflow.rb:20:6:20:10 | ... > ... |
@@ -3381,6 +3689,7 @@
| local_dataflow.rb:60:15:60:15 | x | local_dataflow.rb:61:12:61:12 | x |
| local_dataflow.rb:61:7:68:5 | SSA phi read(x) | local_dataflow.rb:69:12:69:12 | x |
| local_dataflow.rb:61:7:68:5 | case ... | local_dataflow.rb:61:3:68:5 | ... = ... |
+| local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:62:10:62:15 | [input] SSA phi read(x) |
| local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:63:15:63:15 | x |
| local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:65:6:65:6 | x |
| local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:67:5:67:5 | x |
@@ -3389,12 +3698,15 @@
| local_dataflow.rb:62:15:62:15 | 3 | local_dataflow.rb:62:10:62:15 | then ... |
| local_dataflow.rb:63:10:63:15 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) |
| local_dataflow.rb:63:10:63:15 | then ... | local_dataflow.rb:61:7:68:5 | case ... |
+| local_dataflow.rb:63:15:63:15 | x | local_dataflow.rb:63:10:63:15 | [input] SSA phi read(x) |
| local_dataflow.rb:63:15:63:15 | x | local_dataflow.rb:63:10:63:15 | then ... |
| local_dataflow.rb:64:9:65:6 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) |
| local_dataflow.rb:64:9:65:6 | then ... | local_dataflow.rb:61:7:68:5 | case ... |
+| local_dataflow.rb:65:6:65:6 | x | local_dataflow.rb:64:9:65:6 | [input] SSA phi read(x) |
| local_dataflow.rb:65:6:65:6 | x | local_dataflow.rb:64:9:65:6 | then ... |
| local_dataflow.rb:66:3:67:5 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) |
| local_dataflow.rb:66:3:67:5 | else ... | local_dataflow.rb:61:7:68:5 | case ... |
+| local_dataflow.rb:67:5:67:5 | x | local_dataflow.rb:66:3:67:5 | [input] SSA phi read(x) |
| local_dataflow.rb:67:5:67:5 | x | local_dataflow.rb:66:3:67:5 | else ... |
| local_dataflow.rb:69:7:76:5 | case ... | local_dataflow.rb:69:3:76:5 | ... = ... |
| local_dataflow.rb:69:12:69:12 | x | local_dataflow.rb:71:13:71:13 | x |
@@ -3435,7 +3747,9 @@
| local_dataflow.rb:79:13:79:13 | b | local_dataflow.rb:79:25:79:25 | b |
| local_dataflow.rb:79:15:79:45 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) |
| local_dataflow.rb:79:15:79:45 | then ... | local_dataflow.rb:78:7:88:5 | case ... |
+| local_dataflow.rb:79:20:79:26 | [post] self | local_dataflow.rb:79:15:79:45 | [input] SSA phi read(self) |
| local_dataflow.rb:79:20:79:26 | call to sink | local_dataflow.rb:79:15:79:45 | then ... |
+| local_dataflow.rb:79:20:79:26 | self | local_dataflow.rb:79:15:79:45 | [input] SSA phi read(self) |
| local_dataflow.rb:80:8:80:8 | a | local_dataflow.rb:80:13:80:13 | a |
| local_dataflow.rb:80:13:80:13 | [post] a | local_dataflow.rb:80:29:80:29 | a |
| local_dataflow.rb:80:13:80:13 | a | local_dataflow.rb:80:13:80:17 | ... > ... |
@@ -3443,7 +3757,9 @@
| local_dataflow.rb:80:17:80:17 | 0 | local_dataflow.rb:80:13:80:17 | ... > ... |
| local_dataflow.rb:80:19:80:49 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) |
| local_dataflow.rb:80:19:80:49 | then ... | local_dataflow.rb:78:7:88:5 | case ... |
+| local_dataflow.rb:80:24:80:30 | [post] self | local_dataflow.rb:80:19:80:49 | [input] SSA phi read(self) |
| local_dataflow.rb:80:24:80:30 | call to sink | local_dataflow.rb:80:19:80:49 | then ... |
+| local_dataflow.rb:80:24:80:30 | self | local_dataflow.rb:80:19:80:49 | [input] SSA phi read(self) |
| local_dataflow.rb:81:9:81:9 | c | local_dataflow.rb:82:12:82:12 | c |
| local_dataflow.rb:81:13:81:13 | d | local_dataflow.rb:83:12:83:12 | d |
| local_dataflow.rb:81:16:81:16 | e | local_dataflow.rb:84:12:84:12 | e |
@@ -3456,17 +3772,25 @@
| local_dataflow.rb:82:7:82:13 | self | local_dataflow.rb:83:7:83:13 | self |
| local_dataflow.rb:83:7:83:13 | [post] self | local_dataflow.rb:84:7:84:13 | self |
| local_dataflow.rb:83:7:83:13 | self | local_dataflow.rb:84:7:84:13 | self |
+| local_dataflow.rb:84:7:84:13 | [post] self | local_dataflow.rb:81:20:84:33 | [input] SSA phi read(self) |
+| local_dataflow.rb:84:7:84:13 | self | local_dataflow.rb:81:20:84:33 | [input] SSA phi read(self) |
| local_dataflow.rb:85:13:85:13 | f | local_dataflow.rb:85:27:85:27 | f |
| local_dataflow.rb:85:17:85:47 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) |
| local_dataflow.rb:85:17:85:47 | then ... | local_dataflow.rb:78:7:88:5 | case ... |
+| local_dataflow.rb:85:22:85:28 | [post] self | local_dataflow.rb:85:17:85:47 | [input] SSA phi read(self) |
| local_dataflow.rb:85:22:85:28 | call to sink | local_dataflow.rb:85:17:85:47 | then ... |
+| local_dataflow.rb:85:22:85:28 | self | local_dataflow.rb:85:17:85:47 | [input] SSA phi read(self) |
| local_dataflow.rb:86:18:86:18 | g | local_dataflow.rb:86:33:86:33 | g |
| local_dataflow.rb:86:23:86:53 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) |
| local_dataflow.rb:86:23:86:53 | then ... | local_dataflow.rb:78:7:88:5 | case ... |
+| local_dataflow.rb:86:28:86:34 | [post] self | local_dataflow.rb:86:23:86:53 | [input] SSA phi read(self) |
| local_dataflow.rb:86:28:86:34 | call to sink | local_dataflow.rb:86:23:86:53 | then ... |
+| local_dataflow.rb:86:28:86:34 | self | local_dataflow.rb:86:23:86:53 | [input] SSA phi read(self) |
| local_dataflow.rb:87:10:87:10 | x | local_dataflow.rb:87:25:87:25 | x |
| local_dataflow.rb:87:15:87:48 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) |
| local_dataflow.rb:87:15:87:48 | then ... | local_dataflow.rb:78:7:88:5 | case ... |
+| local_dataflow.rb:87:20:87:26 | [post] self | local_dataflow.rb:87:15:87:48 | [input] SSA phi read(self) |
+| local_dataflow.rb:87:20:87:26 | self | local_dataflow.rb:87:15:87:48 | [input] SSA phi read(self) |
| local_dataflow.rb:87:25:87:25 | [post] x | local_dataflow.rb:87:29:87:29 | x |
| local_dataflow.rb:87:25:87:25 | x | local_dataflow.rb:87:29:87:29 | x |
| local_dataflow.rb:87:29:87:29 | x | local_dataflow.rb:87:15:87:48 | then ... |
@@ -3474,56 +3798,74 @@
| local_dataflow.rb:92:1:109:3 | self in and_or | local_dataflow.rb:92:1:109:3 | self (and_or) |
| local_dataflow.rb:93:3:93:3 | a | local_dataflow.rb:94:8:94:8 | a |
| local_dataflow.rb:93:7:93:15 | [input] SSA phi read(self) | local_dataflow.rb:93:7:93:28 | SSA phi read(self) |
+| local_dataflow.rb:93:7:93:15 | [post] self | local_dataflow.rb:93:7:93:15 | [input] SSA phi read(self) |
| local_dataflow.rb:93:7:93:15 | [post] self | local_dataflow.rb:93:20:93:28 | self |
| local_dataflow.rb:93:7:93:15 | call to source | local_dataflow.rb:93:7:93:28 | ... \|\| ... |
+| local_dataflow.rb:93:7:93:15 | self | local_dataflow.rb:93:7:93:15 | [input] SSA phi read(self) |
| local_dataflow.rb:93:7:93:15 | self | local_dataflow.rb:93:20:93:28 | self |
| local_dataflow.rb:93:7:93:28 | ... \|\| ... | local_dataflow.rb:93:3:93:3 | a |
| local_dataflow.rb:93:7:93:28 | ... \|\| ... | local_dataflow.rb:93:3:93:28 | ... = ... |
| local_dataflow.rb:93:7:93:28 | SSA phi read(self) | local_dataflow.rb:94:3:94:9 | self |
| local_dataflow.rb:93:20:93:28 | [input] SSA phi read(self) | local_dataflow.rb:93:7:93:28 | SSA phi read(self) |
+| local_dataflow.rb:93:20:93:28 | [post] self | local_dataflow.rb:93:20:93:28 | [input] SSA phi read(self) |
| local_dataflow.rb:93:20:93:28 | call to source | local_dataflow.rb:93:7:93:28 | ... \|\| ... |
+| local_dataflow.rb:93:20:93:28 | self | local_dataflow.rb:93:20:93:28 | [input] SSA phi read(self) |
| local_dataflow.rb:94:3:94:9 | [post] self | local_dataflow.rb:95:8:95:16 | self |
| local_dataflow.rb:94:3:94:9 | self | local_dataflow.rb:95:8:95:16 | self |
| local_dataflow.rb:95:3:95:3 | b | local_dataflow.rb:96:8:96:8 | b |
| local_dataflow.rb:95:7:95:30 | ( ... ) | local_dataflow.rb:95:3:95:3 | b |
| local_dataflow.rb:95:7:95:30 | ( ... ) | local_dataflow.rb:95:3:95:30 | ... = ... |
| local_dataflow.rb:95:8:95:16 | [input] SSA phi read(self) | local_dataflow.rb:95:8:95:29 | SSA phi read(self) |
+| local_dataflow.rb:95:8:95:16 | [post] self | local_dataflow.rb:95:8:95:16 | [input] SSA phi read(self) |
| local_dataflow.rb:95:8:95:16 | [post] self | local_dataflow.rb:95:21:95:29 | self |
| local_dataflow.rb:95:8:95:16 | call to source | local_dataflow.rb:95:8:95:29 | ... or ... |
+| local_dataflow.rb:95:8:95:16 | self | local_dataflow.rb:95:8:95:16 | [input] SSA phi read(self) |
| local_dataflow.rb:95:8:95:16 | self | local_dataflow.rb:95:21:95:29 | self |
| local_dataflow.rb:95:8:95:29 | ... or ... | local_dataflow.rb:95:7:95:30 | ( ... ) |
| local_dataflow.rb:95:8:95:29 | SSA phi read(self) | local_dataflow.rb:96:3:96:9 | self |
| local_dataflow.rb:95:21:95:29 | [input] SSA phi read(self) | local_dataflow.rb:95:8:95:29 | SSA phi read(self) |
+| local_dataflow.rb:95:21:95:29 | [post] self | local_dataflow.rb:95:21:95:29 | [input] SSA phi read(self) |
| local_dataflow.rb:95:21:95:29 | call to source | local_dataflow.rb:95:8:95:29 | ... or ... |
+| local_dataflow.rb:95:21:95:29 | self | local_dataflow.rb:95:21:95:29 | [input] SSA phi read(self) |
| local_dataflow.rb:96:3:96:9 | [post] self | local_dataflow.rb:98:7:98:15 | self |
| local_dataflow.rb:96:3:96:9 | self | local_dataflow.rb:98:7:98:15 | self |
| local_dataflow.rb:98:3:98:3 | a | local_dataflow.rb:99:8:99:8 | a |
| local_dataflow.rb:98:7:98:15 | [input] SSA phi read(self) | local_dataflow.rb:98:7:98:28 | SSA phi read(self) |
+| local_dataflow.rb:98:7:98:15 | [post] self | local_dataflow.rb:98:7:98:15 | [input] SSA phi read(self) |
| local_dataflow.rb:98:7:98:15 | [post] self | local_dataflow.rb:98:20:98:28 | self |
+| local_dataflow.rb:98:7:98:15 | self | local_dataflow.rb:98:7:98:15 | [input] SSA phi read(self) |
| local_dataflow.rb:98:7:98:15 | self | local_dataflow.rb:98:20:98:28 | self |
| local_dataflow.rb:98:7:98:28 | ... && ... | local_dataflow.rb:98:3:98:3 | a |
| local_dataflow.rb:98:7:98:28 | ... && ... | local_dataflow.rb:98:3:98:28 | ... = ... |
| local_dataflow.rb:98:7:98:28 | SSA phi read(self) | local_dataflow.rb:99:3:99:9 | self |
| local_dataflow.rb:98:20:98:28 | [input] SSA phi read(self) | local_dataflow.rb:98:7:98:28 | SSA phi read(self) |
+| local_dataflow.rb:98:20:98:28 | [post] self | local_dataflow.rb:98:20:98:28 | [input] SSA phi read(self) |
| local_dataflow.rb:98:20:98:28 | call to source | local_dataflow.rb:98:7:98:28 | ... && ... |
+| local_dataflow.rb:98:20:98:28 | self | local_dataflow.rb:98:20:98:28 | [input] SSA phi read(self) |
| local_dataflow.rb:99:3:99:9 | [post] self | local_dataflow.rb:100:8:100:16 | self |
| local_dataflow.rb:99:3:99:9 | self | local_dataflow.rb:100:8:100:16 | self |
| local_dataflow.rb:100:3:100:3 | b | local_dataflow.rb:101:8:101:8 | b |
| local_dataflow.rb:100:7:100:31 | ( ... ) | local_dataflow.rb:100:3:100:3 | b |
| local_dataflow.rb:100:7:100:31 | ( ... ) | local_dataflow.rb:100:3:100:31 | ... = ... |
| local_dataflow.rb:100:8:100:16 | [input] SSA phi read(self) | local_dataflow.rb:100:8:100:30 | SSA phi read(self) |
+| local_dataflow.rb:100:8:100:16 | [post] self | local_dataflow.rb:100:8:100:16 | [input] SSA phi read(self) |
| local_dataflow.rb:100:8:100:16 | [post] self | local_dataflow.rb:100:22:100:30 | self |
+| local_dataflow.rb:100:8:100:16 | self | local_dataflow.rb:100:8:100:16 | [input] SSA phi read(self) |
| local_dataflow.rb:100:8:100:16 | self | local_dataflow.rb:100:22:100:30 | self |
| local_dataflow.rb:100:8:100:30 | ... and ... | local_dataflow.rb:100:7:100:31 | ( ... ) |
| local_dataflow.rb:100:8:100:30 | SSA phi read(self) | local_dataflow.rb:101:3:101:9 | self |
| local_dataflow.rb:100:22:100:30 | [input] SSA phi read(self) | local_dataflow.rb:100:8:100:30 | SSA phi read(self) |
+| local_dataflow.rb:100:22:100:30 | [post] self | local_dataflow.rb:100:22:100:30 | [input] SSA phi read(self) |
| local_dataflow.rb:100:22:100:30 | call to source | local_dataflow.rb:100:8:100:30 | ... and ... |
+| local_dataflow.rb:100:22:100:30 | self | local_dataflow.rb:100:22:100:30 | [input] SSA phi read(self) |
| local_dataflow.rb:101:3:101:9 | [post] self | local_dataflow.rb:103:7:103:15 | self |
| local_dataflow.rb:101:3:101:9 | self | local_dataflow.rb:103:7:103:15 | self |
| local_dataflow.rb:103:3:103:3 | a | local_dataflow.rb:104:3:104:3 | a |
+| local_dataflow.rb:103:7:103:15 | [post] self | local_dataflow.rb:104:3:104:3 | [input] SSA phi read(self) |
| local_dataflow.rb:103:7:103:15 | [post] self | local_dataflow.rb:104:9:104:17 | self |
| local_dataflow.rb:103:7:103:15 | call to source | local_dataflow.rb:103:3:103:3 | a |
| local_dataflow.rb:103:7:103:15 | call to source | local_dataflow.rb:103:3:103:15 | ... = ... |
+| local_dataflow.rb:103:7:103:15 | self | local_dataflow.rb:104:3:104:3 | [input] SSA phi read(self) |
| local_dataflow.rb:103:7:103:15 | self | local_dataflow.rb:104:9:104:17 | self |
| local_dataflow.rb:104:3:104:3 | [input] SSA phi read(self) | local_dataflow.rb:104:5:104:7 | SSA phi read(self) |
| local_dataflow.rb:104:3:104:3 | a | local_dataflow.rb:104:5:104:7 | ... \|\| ... |
@@ -3532,13 +3874,17 @@
| local_dataflow.rb:104:5:104:7 | ... \|\| ... | local_dataflow.rb:104:3:104:17 | ... = ... |
| local_dataflow.rb:104:5:104:7 | SSA phi read(self) | local_dataflow.rb:105:3:105:9 | self |
| local_dataflow.rb:104:9:104:17 | [input] SSA phi read(self) | local_dataflow.rb:104:5:104:7 | SSA phi read(self) |
+| local_dataflow.rb:104:9:104:17 | [post] self | local_dataflow.rb:104:9:104:17 | [input] SSA phi read(self) |
| local_dataflow.rb:104:9:104:17 | call to source | local_dataflow.rb:104:5:104:7 | ... \|\| ... |
+| local_dataflow.rb:104:9:104:17 | self | local_dataflow.rb:104:9:104:17 | [input] SSA phi read(self) |
| local_dataflow.rb:105:3:105:9 | [post] self | local_dataflow.rb:106:7:106:15 | self |
| local_dataflow.rb:105:3:105:9 | self | local_dataflow.rb:106:7:106:15 | self |
| local_dataflow.rb:106:3:106:3 | b | local_dataflow.rb:107:3:107:3 | b |
+| local_dataflow.rb:106:7:106:15 | [post] self | local_dataflow.rb:107:3:107:3 | [input] SSA phi read(self) |
| local_dataflow.rb:106:7:106:15 | [post] self | local_dataflow.rb:107:9:107:17 | self |
| local_dataflow.rb:106:7:106:15 | call to source | local_dataflow.rb:106:3:106:3 | b |
| local_dataflow.rb:106:7:106:15 | call to source | local_dataflow.rb:106:3:106:15 | ... = ... |
+| local_dataflow.rb:106:7:106:15 | self | local_dataflow.rb:107:3:107:3 | [input] SSA phi read(self) |
| local_dataflow.rb:106:7:106:15 | self | local_dataflow.rb:107:9:107:17 | self |
| local_dataflow.rb:107:3:107:3 | [input] SSA phi read(self) | local_dataflow.rb:107:5:107:7 | SSA phi read(self) |
| local_dataflow.rb:107:3:107:3 | b | local_dataflow.rb:108:8:108:8 | b |
@@ -3546,7 +3892,9 @@
| local_dataflow.rb:107:5:107:7 | ... && ... | local_dataflow.rb:107:3:107:17 | ... = ... |
| local_dataflow.rb:107:5:107:7 | SSA phi read(self) | local_dataflow.rb:108:3:108:9 | self |
| local_dataflow.rb:107:9:107:17 | [input] SSA phi read(self) | local_dataflow.rb:107:5:107:7 | SSA phi read(self) |
+| local_dataflow.rb:107:9:107:17 | [post] self | local_dataflow.rb:107:9:107:17 | [input] SSA phi read(self) |
| local_dataflow.rb:107:9:107:17 | call to source | local_dataflow.rb:107:5:107:7 | ... && ... |
+| local_dataflow.rb:107:9:107:17 | self | local_dataflow.rb:107:9:107:17 | [input] SSA phi read(self) |
| local_dataflow.rb:111:1:114:3 | self (object_dup) | local_dataflow.rb:112:3:112:21 | self |
| local_dataflow.rb:111:1:114:3 | self in object_dup | local_dataflow.rb:111:1:114:3 | self (object_dup) |
| local_dataflow.rb:112:3:112:21 | [post] self | local_dataflow.rb:112:8:112:16 | self |
@@ -3602,26 +3950,38 @@
| local_dataflow.rb:133:5:139:7 | SSA phi read(x) | local_dataflow.rb:141:13:141:13 | x |
| local_dataflow.rb:133:8:133:13 | [input] SSA phi read(self) | local_dataflow.rb:133:8:133:23 | SSA phi read(self) |
| local_dataflow.rb:133:8:133:13 | [input] SSA phi read(x) | local_dataflow.rb:133:8:133:23 | SSA phi read(x) |
+| local_dataflow.rb:133:8:133:13 | [post] self | local_dataflow.rb:133:8:133:13 | [input] SSA phi read(self) |
| local_dataflow.rb:133:8:133:13 | [post] self | local_dataflow.rb:133:18:133:23 | self |
| local_dataflow.rb:133:8:133:13 | call to use | local_dataflow.rb:133:8:133:23 | [false] ... \|\| ... |
| local_dataflow.rb:133:8:133:13 | call to use | local_dataflow.rb:133:8:133:23 | [true] ... \|\| ... |
+| local_dataflow.rb:133:8:133:13 | self | local_dataflow.rb:133:8:133:13 | [input] SSA phi read(self) |
| local_dataflow.rb:133:8:133:13 | self | local_dataflow.rb:133:18:133:23 | self |
| local_dataflow.rb:133:8:133:23 | SSA phi read(self) | local_dataflow.rb:134:7:134:12 | self |
| local_dataflow.rb:133:8:133:23 | SSA phi read(x) | local_dataflow.rb:134:11:134:11 | x |
+| local_dataflow.rb:133:12:133:12 | [post] x | local_dataflow.rb:133:8:133:13 | [input] SSA phi read(x) |
| local_dataflow.rb:133:12:133:12 | [post] x | local_dataflow.rb:133:22:133:22 | x |
+| local_dataflow.rb:133:12:133:12 | x | local_dataflow.rb:133:8:133:13 | [input] SSA phi read(x) |
| local_dataflow.rb:133:12:133:12 | x | local_dataflow.rb:133:22:133:22 | x |
| local_dataflow.rb:133:18:133:23 | [input] SSA phi read(self) | local_dataflow.rb:133:8:133:23 | SSA phi read(self) |
| local_dataflow.rb:133:18:133:23 | [input] SSA phi read(x) | local_dataflow.rb:133:8:133:23 | SSA phi read(x) |
+| local_dataflow.rb:133:18:133:23 | [post] self | local_dataflow.rb:133:18:133:23 | [input] SSA phi read(self) |
| local_dataflow.rb:133:18:133:23 | [post] self | local_dataflow.rb:136:7:136:12 | self |
| local_dataflow.rb:133:18:133:23 | call to use | local_dataflow.rb:133:8:133:23 | [false] ... \|\| ... |
| local_dataflow.rb:133:18:133:23 | call to use | local_dataflow.rb:133:8:133:23 | [true] ... \|\| ... |
+| local_dataflow.rb:133:18:133:23 | self | local_dataflow.rb:133:18:133:23 | [input] SSA phi read(self) |
| local_dataflow.rb:133:18:133:23 | self | local_dataflow.rb:136:7:136:12 | self |
+| local_dataflow.rb:133:22:133:22 | [post] x | local_dataflow.rb:133:18:133:23 | [input] SSA phi read(x) |
| local_dataflow.rb:133:22:133:22 | [post] x | local_dataflow.rb:136:11:136:11 | x |
+| local_dataflow.rb:133:22:133:22 | x | local_dataflow.rb:133:18:133:23 | [input] SSA phi read(x) |
| local_dataflow.rb:133:22:133:22 | x | local_dataflow.rb:136:11:136:11 | x |
| local_dataflow.rb:133:24:134:12 | [input] SSA phi read(self) | local_dataflow.rb:133:5:139:7 | SSA phi read(self) |
| local_dataflow.rb:133:24:134:12 | [input] SSA phi read(x) | local_dataflow.rb:133:5:139:7 | SSA phi read(x) |
| local_dataflow.rb:133:24:134:12 | then ... | local_dataflow.rb:133:5:139:7 | if ... |
+| local_dataflow.rb:134:7:134:12 | [post] self | local_dataflow.rb:133:24:134:12 | [input] SSA phi read(self) |
| local_dataflow.rb:134:7:134:12 | call to use | local_dataflow.rb:133:24:134:12 | then ... |
+| local_dataflow.rb:134:7:134:12 | self | local_dataflow.rb:133:24:134:12 | [input] SSA phi read(self) |
+| local_dataflow.rb:134:11:134:11 | [post] x | local_dataflow.rb:133:24:134:12 | [input] SSA phi read(x) |
+| local_dataflow.rb:134:11:134:11 | x | local_dataflow.rb:133:24:134:12 | [input] SSA phi read(x) |
| local_dataflow.rb:135:5:138:9 | [input] SSA phi read(self) | local_dataflow.rb:133:5:139:7 | SSA phi read(self) |
| local_dataflow.rb:135:5:138:9 | [input] SSA phi read(x) | local_dataflow.rb:133:5:139:7 | SSA phi read(x) |
| local_dataflow.rb:135:5:138:9 | else ... | local_dataflow.rb:133:5:139:7 | if ... |
@@ -3634,7 +3994,9 @@
| local_dataflow.rb:137:7:138:9 | if ... | local_dataflow.rb:135:5:138:9 | else ... |
| local_dataflow.rb:137:10:137:15 | [input] SSA phi read(self) | local_dataflow.rb:137:10:137:26 | SSA phi read(self) |
| local_dataflow.rb:137:10:137:15 | [input] SSA phi read(x) | local_dataflow.rb:137:10:137:26 | SSA phi read(x) |
+| local_dataflow.rb:137:10:137:15 | [post] self | local_dataflow.rb:137:10:137:15 | [input] SSA phi read(self) |
| local_dataflow.rb:137:10:137:15 | [post] self | local_dataflow.rb:137:21:137:26 | self |
+| local_dataflow.rb:137:10:137:15 | self | local_dataflow.rb:137:10:137:15 | [input] SSA phi read(self) |
| local_dataflow.rb:137:10:137:15 | self | local_dataflow.rb:137:21:137:26 | self |
| local_dataflow.rb:137:10:137:26 | SSA phi read(self) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) |
| local_dataflow.rb:137:10:137:26 | SSA phi read(x) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) |
@@ -3642,14 +4004,24 @@
| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:7:138:9 | SSA phi read(self) |
| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:7:138:9 | SSA phi read(x) |
| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:7:138:9 | SSA phi read(x) |
+| local_dataflow.rb:137:14:137:14 | [post] x | local_dataflow.rb:137:10:137:15 | [input] SSA phi read(x) |
| local_dataflow.rb:137:14:137:14 | [post] x | local_dataflow.rb:137:25:137:25 | x |
+| local_dataflow.rb:137:14:137:14 | x | local_dataflow.rb:137:10:137:15 | [input] SSA phi read(x) |
| local_dataflow.rb:137:14:137:14 | x | local_dataflow.rb:137:25:137:25 | x |
| local_dataflow.rb:137:20:137:26 | [false] ! ... | local_dataflow.rb:137:10:137:26 | [false] ... && ... |
| local_dataflow.rb:137:20:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:10:137:26 | SSA phi read(self) |
| local_dataflow.rb:137:20:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:10:137:26 | SSA phi read(x) |
| local_dataflow.rb:137:20:137:26 | [true] ! ... | local_dataflow.rb:137:10:137:26 | [true] ... && ... |
+| local_dataflow.rb:137:21:137:26 | [post] self | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) |
+| local_dataflow.rb:137:21:137:26 | [post] self | local_dataflow.rb:137:20:137:26 | [input] SSA phi read(self) |
| local_dataflow.rb:137:21:137:26 | call to use | local_dataflow.rb:137:20:137:26 | [false] ! ... |
| local_dataflow.rb:137:21:137:26 | call to use | local_dataflow.rb:137:20:137:26 | [true] ! ... |
+| local_dataflow.rb:137:21:137:26 | self | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) |
+| local_dataflow.rb:137:21:137:26 | self | local_dataflow.rb:137:20:137:26 | [input] SSA phi read(self) |
+| local_dataflow.rb:137:25:137:25 | [post] x | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) |
+| local_dataflow.rb:137:25:137:25 | [post] x | local_dataflow.rb:137:20:137:26 | [input] SSA phi read(x) |
+| local_dataflow.rb:137:25:137:25 | x | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) |
+| local_dataflow.rb:137:25:137:25 | x | local_dataflow.rb:137:20:137:26 | [input] SSA phi read(x) |
| local_dataflow.rb:141:5:145:7 | SSA phi read(self) | local_dataflow.rb:147:5:147:10 | self |
| local_dataflow.rb:141:5:145:7 | SSA phi read(x) | local_dataflow.rb:147:9:147:9 | x |
| local_dataflow.rb:141:8:141:14 | [false] ! ... | local_dataflow.rb:141:8:141:37 | [false] ... \|\| ... |
@@ -3659,11 +4031,15 @@
| local_dataflow.rb:141:8:141:14 | [true] ! ... | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... |
| local_dataflow.rb:141:8:141:37 | SSA phi read(self) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) |
| local_dataflow.rb:141:8:141:37 | SSA phi read(x) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) |
+| local_dataflow.rb:141:9:141:14 | [post] self | local_dataflow.rb:141:8:141:14 | [input] SSA phi read(self) |
| local_dataflow.rb:141:9:141:14 | [post] self | local_dataflow.rb:141:20:141:25 | self |
| local_dataflow.rb:141:9:141:14 | call to use | local_dataflow.rb:141:8:141:14 | [false] ! ... |
| local_dataflow.rb:141:9:141:14 | call to use | local_dataflow.rb:141:8:141:14 | [true] ! ... |
+| local_dataflow.rb:141:9:141:14 | self | local_dataflow.rb:141:8:141:14 | [input] SSA phi read(self) |
| local_dataflow.rb:141:9:141:14 | self | local_dataflow.rb:141:20:141:25 | self |
+| local_dataflow.rb:141:13:141:13 | [post] x | local_dataflow.rb:141:8:141:14 | [input] SSA phi read(x) |
| local_dataflow.rb:141:13:141:13 | [post] x | local_dataflow.rb:141:24:141:24 | x |
+| local_dataflow.rb:141:13:141:13 | x | local_dataflow.rb:141:8:141:14 | [input] SSA phi read(x) |
| local_dataflow.rb:141:13:141:13 | x | local_dataflow.rb:141:24:141:24 | x |
| local_dataflow.rb:141:19:141:37 | [false] ( ... ) | local_dataflow.rb:141:8:141:37 | [false] ... \|\| ... |
| local_dataflow.rb:141:19:141:37 | [input] SSA phi read(self) | local_dataflow.rb:141:8:141:37 | SSA phi read(self) |
@@ -3671,20 +4047,32 @@
| local_dataflow.rb:141:19:141:37 | [true] ( ... ) | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... |
| local_dataflow.rb:141:20:141:25 | [input] SSA phi read(self) | local_dataflow.rb:141:20:141:36 | SSA phi read(self) |
| local_dataflow.rb:141:20:141:25 | [input] SSA phi read(x) | local_dataflow.rb:141:20:141:36 | SSA phi read(x) |
+| local_dataflow.rb:141:20:141:25 | [post] self | local_dataflow.rb:141:20:141:25 | [input] SSA phi read(self) |
| local_dataflow.rb:141:20:141:25 | [post] self | local_dataflow.rb:141:31:141:36 | self |
+| local_dataflow.rb:141:20:141:25 | self | local_dataflow.rb:141:20:141:25 | [input] SSA phi read(self) |
| local_dataflow.rb:141:20:141:25 | self | local_dataflow.rb:141:31:141:36 | self |
| local_dataflow.rb:141:20:141:36 | SSA phi read(self) | local_dataflow.rb:143:11:143:16 | self |
| local_dataflow.rb:141:20:141:36 | SSA phi read(x) | local_dataflow.rb:143:15:143:15 | x |
| local_dataflow.rb:141:20:141:36 | [false] ... && ... | local_dataflow.rb:141:19:141:37 | [false] ( ... ) |
| local_dataflow.rb:141:20:141:36 | [true] ... && ... | local_dataflow.rb:141:19:141:37 | [true] ( ... ) |
+| local_dataflow.rb:141:24:141:24 | [post] x | local_dataflow.rb:141:20:141:25 | [input] SSA phi read(x) |
| local_dataflow.rb:141:24:141:24 | [post] x | local_dataflow.rb:141:35:141:35 | x |
+| local_dataflow.rb:141:24:141:24 | x | local_dataflow.rb:141:20:141:25 | [input] SSA phi read(x) |
| local_dataflow.rb:141:24:141:24 | x | local_dataflow.rb:141:35:141:35 | x |
| local_dataflow.rb:141:30:141:36 | [false] ! ... | local_dataflow.rb:141:20:141:36 | [false] ... && ... |
| local_dataflow.rb:141:30:141:36 | [input] SSA phi read(self) | local_dataflow.rb:141:20:141:36 | SSA phi read(self) |
| local_dataflow.rb:141:30:141:36 | [input] SSA phi read(x) | local_dataflow.rb:141:20:141:36 | SSA phi read(x) |
| local_dataflow.rb:141:30:141:36 | [true] ! ... | local_dataflow.rb:141:20:141:36 | [true] ... && ... |
+| local_dataflow.rb:141:31:141:36 | [post] self | local_dataflow.rb:141:19:141:37 | [input] SSA phi read(self) |
+| local_dataflow.rb:141:31:141:36 | [post] self | local_dataflow.rb:141:30:141:36 | [input] SSA phi read(self) |
| local_dataflow.rb:141:31:141:36 | call to use | local_dataflow.rb:141:30:141:36 | [false] ! ... |
| local_dataflow.rb:141:31:141:36 | call to use | local_dataflow.rb:141:30:141:36 | [true] ! ... |
+| local_dataflow.rb:141:31:141:36 | self | local_dataflow.rb:141:19:141:37 | [input] SSA phi read(self) |
+| local_dataflow.rb:141:31:141:36 | self | local_dataflow.rb:141:30:141:36 | [input] SSA phi read(self) |
+| local_dataflow.rb:141:35:141:35 | [post] x | local_dataflow.rb:141:19:141:37 | [input] SSA phi read(x) |
+| local_dataflow.rb:141:35:141:35 | [post] x | local_dataflow.rb:141:30:141:36 | [input] SSA phi read(x) |
+| local_dataflow.rb:141:35:141:35 | x | local_dataflow.rb:141:19:141:37 | [input] SSA phi read(x) |
+| local_dataflow.rb:141:35:141:35 | x | local_dataflow.rb:141:30:141:36 | [input] SSA phi read(x) |
| local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) | local_dataflow.rb:141:5:145:7 | SSA phi read(self) |
| local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) | local_dataflow.rb:141:5:145:7 | SSA phi read(x) |
| local_dataflow.rb:141:38:142:9 | then ... | local_dataflow.rb:141:5:145:7 | if ... |
@@ -3696,24 +4084,40 @@
| local_dataflow.rb:143:5:144:16 | elsif ... | local_dataflow.rb:141:5:145:7 | if ... |
| local_dataflow.rb:143:11:143:16 | [input] SSA phi read(self) | local_dataflow.rb:143:11:143:26 | SSA phi read(self) |
| local_dataflow.rb:143:11:143:16 | [input] SSA phi read(x) | local_dataflow.rb:143:11:143:26 | SSA phi read(x) |
+| local_dataflow.rb:143:11:143:16 | [post] self | local_dataflow.rb:143:11:143:16 | [input] SSA phi read(self) |
| local_dataflow.rb:143:11:143:16 | [post] self | local_dataflow.rb:143:21:143:26 | self |
| local_dataflow.rb:143:11:143:16 | call to use | local_dataflow.rb:143:11:143:26 | [false] ... \|\| ... |
| local_dataflow.rb:143:11:143:16 | call to use | local_dataflow.rb:143:11:143:26 | [true] ... \|\| ... |
+| local_dataflow.rb:143:11:143:16 | self | local_dataflow.rb:143:11:143:16 | [input] SSA phi read(self) |
| local_dataflow.rb:143:11:143:16 | self | local_dataflow.rb:143:21:143:26 | self |
| local_dataflow.rb:143:11:143:26 | SSA phi read(self) | local_dataflow.rb:144:11:144:16 | self |
| local_dataflow.rb:143:11:143:26 | SSA phi read(x) | local_dataflow.rb:144:15:144:15 | x |
| local_dataflow.rb:143:11:143:26 | [input] SSA phi read(self) | local_dataflow.rb:143:5:144:16 | SSA phi read(self) |
| local_dataflow.rb:143:11:143:26 | [input] SSA phi read(x) | local_dataflow.rb:143:5:144:16 | SSA phi read(x) |
+| local_dataflow.rb:143:15:143:15 | [post] x | local_dataflow.rb:143:11:143:16 | [input] SSA phi read(x) |
| local_dataflow.rb:143:15:143:15 | [post] x | local_dataflow.rb:143:25:143:25 | x |
+| local_dataflow.rb:143:15:143:15 | x | local_dataflow.rb:143:11:143:16 | [input] SSA phi read(x) |
| local_dataflow.rb:143:15:143:15 | x | local_dataflow.rb:143:25:143:25 | x |
| local_dataflow.rb:143:21:143:26 | [input] SSA phi read(self) | local_dataflow.rb:143:11:143:26 | SSA phi read(self) |
| local_dataflow.rb:143:21:143:26 | [input] SSA phi read(x) | local_dataflow.rb:143:11:143:26 | SSA phi read(x) |
+| local_dataflow.rb:143:21:143:26 | [post] self | local_dataflow.rb:143:11:143:26 | [input] SSA phi read(self) |
+| local_dataflow.rb:143:21:143:26 | [post] self | local_dataflow.rb:143:21:143:26 | [input] SSA phi read(self) |
| local_dataflow.rb:143:21:143:26 | call to use | local_dataflow.rb:143:11:143:26 | [false] ... \|\| ... |
| local_dataflow.rb:143:21:143:26 | call to use | local_dataflow.rb:143:11:143:26 | [true] ... \|\| ... |
+| local_dataflow.rb:143:21:143:26 | self | local_dataflow.rb:143:11:143:26 | [input] SSA phi read(self) |
+| local_dataflow.rb:143:21:143:26 | self | local_dataflow.rb:143:21:143:26 | [input] SSA phi read(self) |
+| local_dataflow.rb:143:25:143:25 | [post] x | local_dataflow.rb:143:11:143:26 | [input] SSA phi read(x) |
+| local_dataflow.rb:143:25:143:25 | [post] x | local_dataflow.rb:143:21:143:26 | [input] SSA phi read(x) |
+| local_dataflow.rb:143:25:143:25 | x | local_dataflow.rb:143:11:143:26 | [input] SSA phi read(x) |
+| local_dataflow.rb:143:25:143:25 | x | local_dataflow.rb:143:21:143:26 | [input] SSA phi read(x) |
| local_dataflow.rb:143:27:144:16 | [input] SSA phi read(self) | local_dataflow.rb:143:5:144:16 | SSA phi read(self) |
| local_dataflow.rb:143:27:144:16 | [input] SSA phi read(x) | local_dataflow.rb:143:5:144:16 | SSA phi read(x) |
| local_dataflow.rb:143:27:144:16 | then ... | local_dataflow.rb:143:5:144:16 | elsif ... |
+| local_dataflow.rb:144:11:144:16 | [post] self | local_dataflow.rb:143:27:144:16 | [input] SSA phi read(self) |
| local_dataflow.rb:144:11:144:16 | call to use | local_dataflow.rb:143:27:144:16 | then ... |
+| local_dataflow.rb:144:11:144:16 | self | local_dataflow.rb:143:27:144:16 | [input] SSA phi read(self) |
+| local_dataflow.rb:144:15:144:15 | [post] x | local_dataflow.rb:143:27:144:16 | [input] SSA phi read(x) |
+| local_dataflow.rb:144:15:144:15 | x | local_dataflow.rb:143:27:144:16 | [input] SSA phi read(x) |
| local_dataflow.rb:147:5:147:10 | [post] self | local_dataflow.rb:148:5:148:10 | self |
| local_dataflow.rb:147:5:147:10 | self | local_dataflow.rb:148:5:148:10 | self |
| local_dataflow.rb:147:9:147:9 | [post] x | local_dataflow.rb:148:9:148:9 | x |
diff --git a/shared/dataflow/codeql/dataflow/VariableCapture.qll b/shared/dataflow/codeql/dataflow/VariableCapture.qll
index c48b46e8a7ba0..80771e4bdbe46 100644
--- a/shared/dataflow/codeql/dataflow/VariableCapture.qll
+++ b/shared/dataflow/codeql/dataflow/VariableCapture.qll
@@ -17,11 +17,17 @@ signature module InputSig {
/** Gets a textual representation of this basic block. */
string toString();
+ /** Gets the length of this basic block. */
+ int length();
+
/** Gets the enclosing callable. */
Callable getEnclosingCallable();
/** Gets the location of this basic block. */
Location getLocation();
+
+ /** Gets the location of the `i`th node in this basic block. */
+ Location getLocation(int i);
}
/**
@@ -717,10 +723,10 @@ module Flow Input> implements OutputSig
TSynthPhi(CaptureSsa::DefinitionExt phi) {
phi instanceof CaptureSsa::PhiNode or phi instanceof CaptureSsa::PhiReadNode
} or
- TExprNode(Expr expr, boolean isPost) {
- expr instanceof VariableRead and isPost = [false, true]
+ TExprNode(Expr expr, Boolean isPost) {
+ expr instanceof VariableRead
or
- synthRead(_, _, _, _, expr) and isPost = [false, true]
+ synthRead(_, _, _, _, expr)
} or
TParamNode(CapturedParameter p) or
TThisParamNode(Callable c) { captureAccess(_, c) } or
diff --git a/shared/ssa/codeql/ssa/Ssa.qll b/shared/ssa/codeql/ssa/Ssa.qll
index ee397375e655e..fc4c200a2563c 100644
--- a/shared/ssa/codeql/ssa/Ssa.qll
+++ b/shared/ssa/codeql/ssa/Ssa.qll
@@ -15,8 +15,14 @@ signature module InputSig {
/** Gets a textual representation of this basic block. */
string toString();
+ /** Gets the length of this basic block. */
+ int length();
+
/** Gets the location of this basic block. */
Location getLocation();
+
+ /** Gets the location of the `i`th node in this basic block. */
+ Location getLocation(int i);
}
/**
@@ -905,6 +911,13 @@ module Make Input> {
/** Gets a textual representation of this SSA definition. */
string toString() { result = "SSA def(" + this.getSourceVariable() + ")" }
+
+ /** Gets the location of this SSA definition. */
+ Location getLocation() {
+ exists(BasicBlock bb, int i | this.definesAt(_, bb, i) |
+ if i = -1 then result = bb.getLocation() else result = bb.getLocation(i)
+ )
+ }
}
/** An SSA definition that corresponds to a write. */
@@ -961,6 +974,13 @@ module Make Input> {
/** Gets a textual representation of this SSA definition. */
string toString() { result = this.(Definition).toString() }
+
+ /** Gets the location of this SSA definition. */
+ Location getLocation() {
+ exists(BasicBlock bb, int i | this.definesAt(_, bb, i, _) |
+ if i = -1 then result = bb.getLocation() else result = bb.getLocation(i)
+ )
+ }
}
/**
@@ -1134,4 +1154,379 @@ module Make Input> {
)
}
}
+
+ signature module DataFlowIntegrationInputSig {
+ /**
+ * An expression with a value. That is, we expect these expressions to be
+ * represented in the data flow graph.
+ */
+ class Expr {
+ /** Gets a textual representation of this expression. */
+ string toString();
+
+ // /** Gets the location of this expression. */
+ // Location getLocation();
+ /** Holds if the `i`th node of basic block `bb` evaluates this expression. */
+ predicate hasCfgNode(BasicBlock bb, int i);
+
+ predicate hasPostUpdateNode();
+ }
+
+ // /** A read of a captured variable. */
+ // class VariableRead extends Expr {
+ // /** Gets the variable that this expression reads. */
+ // SourceVariable getVariable();
+ // }
+ predicate ssaDefAssigns(WriteDefinition def, Expr value);
+
+ /** A parameter. */
+ class Parameter {
+ /** Gets a textual representation of this expression. */
+ string toString();
+
+ /** Gets the location of this parameter. */
+ Location getLocation();
+ }
+
+ predicate ssaDefInitializesParam(WriteDefinition def, Parameter p);
+ }
+
+ module DataFlowIntegration {
+ private import codeql.util.Boolean
+
+ final private class DefinitionExtFinal = DefinitionExt;
+
+ pragma[noinline]
+ private predicate adjacentDefReadExt0(
+ DefinitionExt def, BasicBlock bb1, int i1, BasicBlock bb2, int i2, SourceVariable v
+ ) {
+ adjacentDefReadExt(def, _, bb1, i1, bb2, i2) and
+ v = def.getSourceVariable()
+ }
+
+ private predicate adjacentDefReachesReadExt(
+ DefinitionExt def, BasicBlock bb1, int i1, BasicBlock bb2, int i2
+ ) {
+ exists(SourceVariable v | adjacentDefReadExt0(def, bb1, i1, bb2, i2, v) |
+ def.definesAt(v, bb1, i1, _)
+ or
+ variableRead(bb1, i1, v, true)
+ )
+ or
+ exists(BasicBlock bb3, int i3 |
+ adjacentDefReachesReadExt(def, bb1, i1, bb3, i3) and
+ variableRead(bb3, i3, _, false) and
+ adjacentDefReadExt(def, _, bb3, i3, bb2, i2)
+ )
+ }
+
+ private predicate adjacentDefReachesUncertainReadExt(
+ DefinitionExt def, BasicBlock bb1, int i1, BasicBlock bb2, int i2
+ ) {
+ adjacentDefReachesReadExt(def, bb1, i1, bb2, i2) and
+ variableRead(bb2, i2, _, false)
+ }
+
+ private predicate lastRefBeforeRedefExt(
+ DefinitionExt def, BasicBlock bb, int i, BasicBlock input, DefinitionExt next
+ ) {
+ exists(SourceVariable v |
+ lastRefRedefExt(def, v, bb, i, input, next) and
+ not variableRead(bb, i, v, false)
+ )
+ or
+ exists(BasicBlock bb0, int i0 |
+ lastRefRedefExt(def, _, bb0, i0, input, next) and
+ adjacentDefReachesUncertainReadExt(def, bb, i, bb0, i0)
+ )
+ }
+
+ /** Same as `adjacentDefReadExt`, but skips uncertain reads. */
+ pragma[nomagic]
+ private predicate adjacentDefSkipUncertainReadsExt(
+ DefinitionExt def, BasicBlock bb1, int i1, BasicBlock bb2, int i2
+ ) {
+ adjacentDefReachesReadExt(def, bb1, i1, bb2, i2) and
+ variableRead(bb2, i2, _, true)
+ }
+
+ private predicate adjacentReadPairExt(DefinitionExt def, ReadNode read1, ReadNode read2) {
+ exists(BasicBlock bb1, int i1, BasicBlock bb2, int i2 |
+ read1.getExpr().hasCfgNode(bb1, i1) and
+ variableRead(bb1, i1, _, true) and
+ adjacentDefSkipUncertainReadsExt(def, bb1, i1, bb2, i2) and
+ read2.getExpr().hasCfgNode(bb2, i2)
+ )
+ }
+
+ /** An SSA definition into which another SSA definition may flow. */
+ private class SsaInputDefinitionExt extends DefinitionExtFinal {
+ SsaInputDefinitionExt() {
+ this instanceof PhiNode
+ or
+ this instanceof PhiReadNode
+ }
+
+ predicate hasInputFromBlock(DefinitionExt def, BasicBlock bb, int i, BasicBlock input) {
+ lastRefBeforeRedefExt(def, bb, i, input, this)
+ }
+ }
+
+ private newtype TNode =
+ TParamNode(DfInput::Parameter p) or
+ TExprNode(DfInput::Expr e, Boolean isPost) {
+ e.hasPostUpdateNode()
+ or
+ isPost = false
+ } or
+ TSsaDefinitionNode(DefinitionExt def) or
+ TSsaInputNode(SsaInputDefinitionExt def, BasicBlock input) {
+ def.hasInputFromBlock(_, _, _, input)
+ }
+
+ /**
+ * A data flow node that we need to reference in the step relations for
+ * captured variables.
+ *
+ * Note that only the `SynthesizedCaptureNode` subclass is expected to be
+ * added as additional nodes in `DataFlow::Node`. The other subclasses are
+ * expected to already be present and are included here in order to reference
+ * them in the step relations.
+ */
+ abstract private class NodeImpl extends TNode {
+ abstract Location getLocation();
+
+ abstract string toString();
+ }
+
+ final class Node = NodeImpl;
+
+ private class ParameterNodeImpl extends NodeImpl, TParamNode {
+ private DfInput::Parameter p;
+
+ ParameterNodeImpl() { this = TParamNode(p) }
+
+ DfInput::Parameter getParameter() { result = p }
+
+ override string toString() { result = p.toString() }
+
+ override Location getLocation() { result = p.getLocation() }
+ }
+
+ final class ParameterNode = ParameterNodeImpl;
+
+ abstract private class ExprNodePreOrPostImpl extends NodeImpl, TExprNode {
+ DfInput::Expr e;
+ boolean isPost;
+
+ ExprNodePreOrPostImpl() { this = TExprNode(e, isPost) }
+
+ DfInput::Expr getExpr() { result = e }
+
+ predicate isPostUpdate() { isPost = true }
+
+ override Location getLocation() {
+ exists(BasicBlock bb, int i |
+ e.hasCfgNode(bb, i) and
+ result = bb.getLocation(i)
+ )
+ }
+ }
+
+ final class ExprNodePreOrPost = ExprNodePreOrPostImpl;
+
+ private class ExprNodeImpl extends ExprNodePreOrPostImpl {
+ ExprNodeImpl() { isPost = false }
+
+ override string toString() { result = e.toString() }
+ }
+
+ final class ExprNode = ExprNodeImpl;
+
+ private class ExprPostUpdateNodeImpl extends ExprNodePreOrPostImpl {
+ ExprPostUpdateNodeImpl() { isPost = true }
+
+ ExprNode getPreUpdateNode() { result = TExprNode(e, false) }
+
+ override string toString() { result = e.toString() + " [postupdate]" }
+ }
+
+ final class ExprPostUpdateNode = ExprPostUpdateNodeImpl;
+
+ private class ReadNodeImpl extends ExprNodeImpl {
+ private BasicBlock bb_;
+ private int i_;
+ private SourceVariable v_;
+
+ ReadNodeImpl() {
+ variableRead(bb_, i_, v_, true) and
+ this.getExpr().hasCfgNode(bb_, i_)
+ }
+
+ SourceVariable getVariable() { result = v_ }
+
+ pragma[nomagic]
+ predicate readsAt(BasicBlock bb, int i, SourceVariable v) {
+ bb = bb_ and
+ i = i_ and
+ v = v_
+ }
+ }
+
+ final class ReadNode = ReadNodeImpl;
+
+ /**
+ * A synthesized data flow node representing the storage of a captured
+ * variable.
+ */
+ abstract private class SsaNodeImpl extends NodeImpl {
+ abstract DefinitionExt getDefinitionExt();
+ }
+
+ final class SsaNode = SsaNodeImpl;
+
+ /** An SSA definition, viewed as a node in a data flow graph. */
+ private class SsaDefinitionExtNodeImpl extends SsaNodeImpl, TSsaDefinitionNode {
+ private DefinitionExt def;
+
+ SsaDefinitionExtNodeImpl() { this = TSsaDefinitionNode(def) }
+
+ override DefinitionExt getDefinitionExt() { result = def }
+
+ override Location getLocation() { result = def.getLocation() }
+
+ override string toString() { result = def.toString() }
+ }
+
+ final class SsaDefinitionExtNode = SsaDefinitionExtNodeImpl;
+
+ /**
+ * A node that represents an input to an SSA phi (read) definition.
+ *
+ * This allows for barrier guards to filter input to phi nodes. For example, in
+ *
+ * ```rb
+ * x = taint
+ * if x != "safe" then
+ * x = "safe"
+ * end
+ * sink x
+ * ```
+ *
+ * the `false` edge out of `x != "safe"` guards the input from `x = taint` into the
+ * `phi` node after the condition.
+ *
+ * It is also relevant to filter input into phi read nodes:
+ *
+ * ```rb
+ * x = taint
+ * if b then
+ * if x != "safe1" then
+ * return
+ * end
+ * else
+ * if x != "safe2" then
+ * return
+ * end
+ * end
+ *
+ * sink x
+ * ```
+ *
+ * both inputs into the phi read node after the outer condition are guarded.
+ */
+ private class SsaInputNodeImpl extends SsaNodeImpl, TSsaInputNode {
+ private SsaInputDefinitionExt def_;
+ private BasicBlock input_;
+
+ SsaInputNodeImpl() { this = TSsaInputNode(def_, input_) }
+
+ predicate hasInputFromBlock(DefinitionExt def, BasicBlock input) {
+ def = def_ and
+ input = input_
+ }
+
+ override SsaInputDefinitionExt getDefinitionExt() { result = def_ }
+
+ override Location getLocation() { result = input_.getLocation(input_.length() - 1) }
+
+ override string toString() { result = "[input] " + def_.toString() }
+ }
+
+ final class SsaInputNode = SsaInputNodeImpl;
+
+ /**
+ * Holds if `nodeFrom` is a node for SSA definition `def`, which can reach `next`.
+ */
+ pragma[nomagic]
+ private predicate localFlowSsaInputFromDef(
+ DefinitionExt def, SsaDefinitionExtNode nodeFrom, SsaInputNode nodeTo
+ ) {
+ exists(BasicBlock bb, int i, BasicBlock input, SsaInputDefinitionExt next |
+ next.hasInputFromBlock(def, bb, i, input) and
+ def = nodeFrom.getDefinitionExt() and
+ def.definesAt(_, bb, i, _) and
+ nodeTo = TSsaInputNode(next, input)
+ )
+ }
+
+ /**
+ * Holds if `nodeFrom` is a last read of SSA definition `def`, which
+ * can reach `nodeTo`.
+ */
+ pragma[nomagic]
+ private predicate localFlowSsaInputFromRead(
+ DefinitionExt def, ReadNode nodeFrom, SsaInputNode nodeTo
+ ) {
+ exists(BasicBlock bb, int i, BasicBlock input, SsaInputDefinitionExt next |
+ next.hasInputFromBlock(def, bb, i, input) and
+ nodeFrom.readsAt(bb, i, def.getSourceVariable()) and
+ nodeTo = TSsaInputNode(next, input)
+ )
+ }
+
+ private predicate firstReadExt(DefinitionExt def, ReadNode read) {
+ exists(SourceVariable v, BasicBlock bb1, int i1, BasicBlock bb2, int i2 |
+ def.definesAt(v, bb1, i1, _) and
+ adjacentDefSkipUncertainReadsExt(def, bb1, i1, bb2, i2) and
+ read.readsAt(bb2, i2, v)
+ )
+ }
+
+ /**
+ * Holds if there is a local use-use flow step from `nodeFrom` to `nodeTo`
+ * involving SSA definition `def`.
+ */
+ private predicate localSsaFlowStepUseUse(DefinitionExt def, ReadNode nodeFrom, ReadNode nodeTo) {
+ adjacentReadPairExt(def, nodeFrom, nodeTo)
+ }
+
+ predicate localFlowStep(DefinitionExt def, Node nodeFrom, Node nodeTo) {
+ // Flow from assignment into SSA definition
+ DfInput::ssaDefAssigns(def, nodeFrom.(ExprNode).getExpr()) and
+ nodeTo.(SsaDefinitionExtNode).getDefinitionExt() = def
+ or
+ // Flow from SSA definition to first read
+ def = nodeFrom.(SsaDefinitionExtNode).getDefinitionExt() and
+ firstReadExt(def, nodeTo)
+ or
+ // Flow from (post-update) read to next read
+ localSsaFlowStepUseUse(def, [nodeFrom, nodeFrom.(ExprPostUpdateNode).getPreUpdateNode()],
+ nodeTo)
+ or
+ // Flow into phi (read) SSA definition node from def
+ localFlowSsaInputFromDef(def, nodeFrom, nodeTo)
+ or
+ // Flow from input node to def
+ nodeTo.(SsaDefinitionExtNode).getDefinitionExt() = def and
+ def = nodeFrom.(SsaInputNode).getDefinitionExt()
+ or
+ // Flow from parameter into entry definition
+ DfInput::ssaDefInitializesParam(nodeTo.(SsaDefinitionExtNode).getDefinitionExt(),
+ nodeFrom.(ParameterNode).getParameter())
+ or
+ localFlowSsaInputFromRead(def, [nodeFrom, nodeFrom.(ExprPostUpdateNode).getPreUpdateNode()],
+ nodeTo)
+ }
+ }
}