summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
diff options
context:
space:
mode:
authorNirav Dave <niravd@google.com>2018-03-09 20:57:15 +0000
committerNirav Dave <niravd@google.com>2018-03-09 20:57:15 +0000
commit071699bf8280f077139e3b24633f4c140e961b78 (patch)
tree586043de020900f17998ed65b6b79ddd8a577e5c /llvm/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
parent775f07d1210154756b9f0cb299517feaf9a8a7cb (diff)
downloadbcm5719-llvm-071699bf8280f077139e3b24633f4c140e961b78.tar.gz
bcm5719-llvm-071699bf8280f077139e3b24633f4c140e961b78.zip
[DAG] Enforce stricter NodeId invariant during Instruction selection
Instruction Selection makes use of the topological ordering of nodes by node id (a node's operands have smaller node id than it) when doing cycle detection. During selection we may violate this property as a selection of multiple nodes may induce a use dependence (and thus a node id restriction) between two unrelated nodes. If a selected node has an unselected successor this may allow us to miss a cycle in detection an invalid selection. This patch fixes this by marking all unselected successors of a selected node have negated node id. We avoid pruning on such negative ids but still can reconstruct the original id for pruning. In-tree targets have been updated to replace DAG-level replacements with ISel-level ones which enforce this property. This preemptively fixes PR36312 before triggering commit r324359 relands Reviewers: craig.topper, bogner, jyknight Subscribers: arsenm, nhaehnle, javed.absar, llvm-commits, hiraditya Differential Revision: https://reviews.llvm.org/D43198 llvm-svn: 327170
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud