diff options
author | Andrew Lenharth <andrewl@lenharth.org> | 2005-10-23 03:40:17 +0000 |
---|---|---|
committer | Andrew Lenharth <andrewl@lenharth.org> | 2005-10-23 03:40:17 +0000 |
commit | 4b3932aa89bc742f552e207831d2329d7a371563 (patch) | |
tree | 97f15eb4b08f1a47c482c4c642c0b424b2771868 /llvm/lib/CodeGen | |
parent | 5ec46cdf5c45b313dbdfa3c08b8d4fa7342bc66e (diff) | |
download | bcm5719-llvm-4b3932aa89bc742f552e207831d2329d7a371563.tar.gz bcm5719-llvm-4b3932aa89bc742f552e207831d2329d7a371563.zip |
add TargetExternalSymbol
llvm-svn: 23886
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index a8489d29656..7d3cddb6568 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -312,6 +312,9 @@ void SelectionDAG::RemoveNodeFromCSEMaps(SDNode *N) { case ISD::ExternalSymbol: Erased = ExternalSymbols.erase(cast<ExternalSymbolSDNode>(N)->getSymbol()); break; + case ISD::TargetExternalSymbol: + Erased = TargetExternalSymbols.erase(cast<ExternalSymbolSDNode>(N)->getSymbol()); + break; case ISD::VALUETYPE: Erased = ValueTypeNodes[cast<VTSDNode>(N)->getVT()] != 0; ValueTypeNodes[cast<VTSDNode>(N)->getVT()] = 0; @@ -551,7 +554,15 @@ SDOperand SelectionDAG::getValueType(MVT::ValueType VT) { SDOperand SelectionDAG::getExternalSymbol(const char *Sym, MVT::ValueType VT) { SDNode *&N = ExternalSymbols[Sym]; if (N) return SDOperand(N, 0); - N = new ExternalSymbolSDNode(Sym, VT); + N = new ExternalSymbolSDNode(false, Sym, VT); + AllNodes.push_back(N); + return SDOperand(N, 0); +} + +SDOperand SelectionDAG::getTargetExternalSymbol(const char *Sym, MVT::ValueType VT) { + SDNode *&N = TargetExternalSymbols[Sym]; + if (N) return SDOperand(N, 0); + N = new ExternalSymbolSDNode(true, Sym, VT); AllNodes.push_back(N); return SDOperand(N, 0); } @@ -1586,6 +1597,7 @@ const char *SDNode::getOperationName(const SelectionDAG *G) const { case ISD::BasicBlock: return "BasicBlock"; case ISD::Register: return "Register"; case ISD::ExternalSymbol: return "ExternalSymbol"; + case ISD::TargetExternalSymbol: return "TargetExternalSymbol"; case ISD::ConstantPool: return "ConstantPool"; case ISD::TargetConstantPool: return "TargetConstantPool"; case ISD::CopyToReg: return "CopyToReg"; |