Make legalize a bit more efficient, and canonicalize sub X, C -> add X, -C

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21882 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2005-05-12 00:17:04 +00:00
parent e066d68eb4
commit 88de6e77bf
2 changed files with 12 additions and 8 deletions

View File

@@ -323,8 +323,11 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
Tmp1 = LegalizeOp(Node->getOperand(0)); // Legalize the chain.
// There is no need to legalize the size argument (Operand #1)
if (Tmp1 != Node->getOperand(0))
Result = DAG.getNode(Node->getOpcode(), MVT::Other, Tmp1,
Node->getOperand(1));
Node->setAdjCallChain(Tmp1);
// Note that we do not create new ADJCALLSTACK DOWN/UP nodes here. These
// nodes are treated specially and are mutated in place. This makes the dag
// legalization process more efficient and also makes libcall insertion
// easier.
break;
case ISD::DYNAMIC_STACKALLOC:
Tmp1 = LegalizeOp(Node->getOperand(0)); // Legalize the chain.