aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/SelectionDAG/SelectionDAGCSEMap.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-08-11 21:01:22 +0000
committerChris Lattner <sabre@nondot.org>2006-08-11 21:01:22 +0000
commit61b09412fe2c98367730c7064d56eff537b03434 (patch)
treecf15a6a7b247c17521fb44b7f6e4b95e697c248b /lib/CodeGen/SelectionDAG/SelectionDAGCSEMap.cpp
parentcbea3045ce0bdd061c494a831d0ce2d5834211cc (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.cpp26
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) {