summaryrefslogtreecommitdiffstats
path: root/llvm/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
commit3f16b201e2b3eadbe1c902715c55bbe918a56c93 (patch)
tree5e0b351680413a95df58c8d094d03a8c11610b15 /llvm/lib/CodeGen/SelectionDAG/SelectionDAGCSEMap.cpp
parent2006a2ebaba1644fbfa60c2ac12b704c0ac1e659 (diff)
downloadbcm5719-llvm-3f16b201e2b3eadbe1c902715c55bbe918a56c93.tar.gz
bcm5719-llvm-3f16b201e2b3eadbe1c902715c55bbe918a56c93.zip
Move the BBNodes, GlobalValues, TargetGlobalValues, Constants, TargetConstants,
RegNodes, and ValueNodes maps into the CSEMap. llvm-svn: 29626
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGCSEMap.cpp')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SelectionDAGCSEMap.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGCSEMap.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGCSEMap.cpp
index 63599927bf8..bfd2f9eb29a 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGCSEMap.cpp
+++ b/llvm/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) {
OpenPOWER on IntegriCloud