forked from OSchip/llvm-project
[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
This commit is contained in:
parent
9b5a89b0e2
commit
9c529b6be3
|
@ -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());
|
||||
|
|
Loading…
Reference in New Issue