diff options
author | Amaury Sechet <deadalnix@gmail.com> | 2017-08-14 11:44:03 +0000 |
---|---|---|
committer | Amaury Sechet <deadalnix@gmail.com> | 2017-08-14 11:44:03 +0000 |
commit | 9c529b6be31cf1478ed14c39ac6c6c4b97628f5f (patch) | |
tree | 5c89217aaca0dde612baa9ad0628fceda25fa155 /llvm/lib | |
parent | 9b5a89b0e2fb3482eee26a707fb23e295baf2fb5 (diff) | |
download | bcm5719-llvm-9c529b6be31cf1478ed14c39ac6c6c4b97628f5f.tar.gz bcm5719-llvm-9c529b6be31cf1478ed14c39ac6c6c4b97628f5f.zip |
[DAGCombine] Do not try to deduplicate commutative operations if both operand are the same.
Summary: It is creating useless work as the commuted nodes is the same as the node we are working on in that case.
Reviewers: jyknight, nemanjai, mkuper, spatel, RKSimon, zvi, bkramer
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D33840
llvm-svn: 310832
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 88dc0f4bde6..bd11c5aa1b3 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -1614,15 +1614,15 @@ SDValue DAGCombiner::combine(SDNode *N) { } } - // If N is a commutative binary node, try commuting it to enable more - // sdisel CSE. + // If N is a commutative binary node, try eliminate it if the commuted + // version is already present in the DAG. if (!RV.getNode() && TLI.isCommutativeBinOp(N->getOpcode()) && N->getNumValues() == 1) { SDValue N0 = N->getOperand(0); SDValue N1 = N->getOperand(1); // Constant operands are canonicalized to RHS. - if (isa<ConstantSDNode>(N0) || !isa<ConstantSDNode>(N1)) { + if (N0 != N1 && (isa<ConstantSDNode>(N0) || !isa<ConstantSDNode>(N1))) { SDValue Ops[] = {N1, N0}; SDNode *CSENode = DAG.getNodeIfExists(N->getOpcode(), N->getVTList(), Ops, N->getFlags()); |