From 3f16b201e2b3eadbe1c902715c55bbe918a56c93 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 11 Aug 2006 21:01:22 +0000 Subject: Move the BBNodes, GlobalValues, TargetGlobalValues, Constants, TargetConstants, RegNodes, and ValueNodes maps into the CSEMap. llvm-svn: 29626 --- .../CodeGen/SelectionDAG/SelectionDAGCSEMap.cpp | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGCSEMap.cpp') 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(N)->getValue()); + break; + case ISD::TargetGlobalAddress: + case ISD::GlobalAddress: + AddPointer(cast(N)->getGlobal()); + AddInteger(cast(N)->getOffset()); + break; + case ISD::BasicBlock: + AddPointer(cast(N)->getBasicBlock()); + break; + case ISD::Register: + AddInteger(cast(N)->getReg()); + break; + case ISD::SRCVALUE: + AddPointer(cast(N)->getValue()); + AddInteger(cast(N)->getOffset()); + break; + } + } } SelectionDAGCSEMap::NodeID::NodeID(unsigned short ID, const void *VTList) { -- cgit v1.2.3