Relax this check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30381 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2006-09-14 23:54:24 +00:00
parent 697e590580
commit 7905c55b12

View File

@ -824,13 +824,16 @@ bool TreePatternNode::canPatternMatch(std::string &Reason, DAGISelEmitter &ISE){
const SDNodeInfo &NodeInfo = ISE.getSDNodeInfo(getOperator());
if (NodeInfo.hasProperty(SDNodeInfo::SDNPCommutative)) {
// Scan all of the operands of the node and make sure that only the last one
// is a constant node.
for (unsigned i = 0, e = getNumChildren()-1; i != e; ++i)
if (!getChild(i)->isLeaf() &&
getChild(i)->getOperator()->getName() == "imm") {
Reason = "Immediate value must be on the RHS of commutative operators!";
return false;
}
// is a constant node, unless the RHS also is.
if (getChild(getNumChildren()-1)->isLeaf() ||
getChild(getNumChildren()-1)->getOperator()->getName() != "imm") {
for (unsigned i = 0, e = getNumChildren()-1; i != e; ++i)
if (!getChild(i)->isLeaf() &&
getChild(i)->getOperator()->getName() == "imm") {
Reason = "Immediate value must be on the RHS of commutative operators!";
return false;
}
}
}
return true;