support targetexternalsym
authorAndrew Lenharth <andrewl@lenharth.org>
Sat, 24 Dec 2005 23:36:59 +0000 (23:36 +0000)
committerAndrew Lenharth <andrewl@lenharth.org>
Sat, 24 Dec 2005 23:36:59 +0000 (23:36 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25005 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/TargetSelectionDAG.td
utils/TableGen/DAGISelEmitter.cpp

index 2d6f4e344c22fb57850a61175df9090cf42ac291..e19a5a375a6044bb1a0df24df68d337e0e6413b5 100644 (file)
@@ -190,20 +190,23 @@ def vt         : SDNode<"ISD::VALUETYPE" , SDTOther   , [], "VTSDNode">;
 def bb         : SDNode<"ISD::BasicBlock", SDTOther   , [], "BasicBlockSDNode">;
 def cond       : SDNode<"ISD::CONDCODE"  , SDTOther   , [], "CondCodeSDNode">;
 def undef      : SDNode<"ISD::UNDEF"     , SDTUNDEF   , []>;
-def globaladdr : SDNode<"ISD::GlobalAddress",       SDTPtrLeaf, [],
+def globaladdr : SDNode<"ISD::GlobalAddress",         SDTPtrLeaf, [],
                         "GlobalAddressSDNode">;
-def tglobaladdr: SDNode<"ISD::TargetGlobalAddress", SDTPtrLeaf, [],
-                        "GlobalAddressSDNode">;
-def constpool  : SDNode<"ISD::ConstantPool",        SDTPtrLeaf, [],
-                        "ConstantPoolSDNode">;
-def tconstpool : SDNode<"ISD::TargetConstantPool",  SDTPtrLeaf, [],
-                        "ConstantPoolSDNode">;
-def frameindex : SDNode<"ISD::FrameIndex",          SDTPtrLeaf, [],
-                        "FrameIndexSDNode">;
-def tframeindex: SDNode<"ISD::TargetFrameIndex",    SDTPtrLeaf, [],
-                        "FrameIndexSDNode">;
-def externalsym: SDNode<"ISD::ExternalSymbol",      SDTPtrLeaf, [],
-                        "ExternalSymbolSDNode">;
+def tglobaladdr : SDNode<"ISD::TargetGlobalAddress",  SDTPtrLeaf, [],
+                         "GlobalAddressSDNode">;
+def constpool   : SDNode<"ISD::ConstantPool",         SDTPtrLeaf, [],
+                         "ConstantPoolSDNode">;
+def tconstpool  : SDNode<"ISD::TargetConstantPool",   SDTPtrLeaf, [],
+                         "ConstantPoolSDNode">;
+def frameindex  : SDNode<"ISD::FrameIndex",           SDTPtrLeaf, [],
+                         "FrameIndexSDNode">;
+def tframeindex : SDNode<"ISD::TargetFrameIndex",     SDTPtrLeaf, [],
+                         "FrameIndexSDNode">;
+def externalsym : SDNode<"ISD::ExternalSymbol",       SDTPtrLeaf, [],
+                         "ExternalSymbolSDNode">;
+def texternalsym: SDNode<"ISD::TargetExternalSymbol", SDTPtrLeaf, [],
+                         "ExternalSymbolSDNode">;
+
 def add        : SDNode<"ISD::ADD"       , SDTIntBinOp   ,
                         [SDNPCommutative, SDNPAssociative]>;
 def sub        : SDNode<"ISD::SUB"       , SDTIntBinOp>;
index 05b96290a97d438b9b0787169f682df033779396..8754097d904f0b2f4f48a71e97ecce150424fb23 100644 (file)
@@ -1983,6 +1983,10 @@ public:
         OS << "      ";
         DeclareSDOperand("Tmp"+utostr(ResNo));
         OS << " = " << Val << ";\n";
+      } else if (!N->isLeaf() && N->getOperator()->getName() == "texternalsym") {
+        OS << "      ";
+        DeclareSDOperand("Tmp"+utostr(ResNo));
+        OS << " = " << Val << ";\n";
       } else if (N->isLeaf() && (CP = NodeGetComplexPattern(N, ISE))) {
         std::string Fn = CP->getSelectFunc();
         NumRes = CP->getNumOperands();