diff options
author | Chris Lattner <sabre@nondot.org> | 2006-08-11 21:01:22 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-08-11 21:01:22 +0000 |
commit | 61b09412fe2c98367730c7064d56eff537b03434 (patch) | |
tree | cf15a6a7b247c17521fb44b7f6e4b95e697c248b /lib/CodeGen/SelectionDAG/SelectionDAGCSEMap.cpp | |
parent | cbea3045ce0bdd061c494a831d0ce2d5834211cc (diff) |
Move the BBNodes, GlobalValues, TargetGlobalValues, Constants, TargetConstants,
RegNodes, and ValueNodes maps into the CSEMap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29626 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/SelectionDAGCSEMap.cpp')
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAGCSEMap.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGCSEMap.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGCSEMap.cpp index 63599927bf..bfd2f9eb29 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGCSEMap.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGCSEMap.cpp @@ -23,6 +23,32 @@ SelectionDAGCSEMap::NodeID::NodeID(SDNode *N) { SetValueTypes(N->value_begin()); // Add the operand info. SetOperands(N->op_begin(), N->getNumOperands()); + + // Handle SDNode leafs with special info. + if (N->getNumOperands() == 0) { + switch (N->getOpcode()) { + default: break; // Normal nodes don't need extra info. + case ISD::TargetConstant: + case ISD::Constant: + AddInteger(cast<ConstantSDNode>(N)->getValue()); + break; + case ISD::TargetGlobalAddress: + case ISD::GlobalAddress: + AddPointer(cast<GlobalAddressSDNode>(N)->getGlobal()); + AddInteger(cast<GlobalAddressSDNode>(N)->getOffset()); + break; + case ISD::BasicBlock: + AddPointer(cast<BasicBlockSDNode>(N)->getBasicBlock()); + break; + case ISD::Register: + AddInteger(cast<RegisterSDNode>(N)->getReg()); + break; + case ISD::SRCVALUE: + AddPointer(cast<SrcValueSDNode>(N)->getValue()); + AddInteger(cast<SrcValueSDNode>(N)->getOffset()); + break; + } + } } SelectionDAGCSEMap::NodeID::NodeID(unsigned short ID, const void *VTList) { |