Changes in directory llvm/include/llvm/CodeGen:
SelectionDAG.h updated: 1.70 -> 1.71 SelectionDAGNodes.h updated: 1.78 -> 1.79 --- Log message: Add support for a new STRING and LOCATION node for line number support, patch contributed by Daniel Berlin, with a few cleanups here and there by me. --- Diffs of the changes: (+24 -1) SelectionDAG.h | 2 ++ SelectionDAGNodes.h | 23 ++++++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) Index: llvm/include/llvm/CodeGen/SelectionDAG.h diff -u llvm/include/llvm/CodeGen/SelectionDAG.h:1.70 llvm/include/llvm/CodeGen/SelectionDAG.h:1.71 --- llvm/include/llvm/CodeGen/SelectionDAG.h:1.70 Fri Nov 18 19:42:10 2005 +++ llvm/include/llvm/CodeGen/SelectionDAG.h Tue Nov 29 00:15:39 2005 @@ -105,6 +105,7 @@ /// argument, it is used as the seed for node deletion. void RemoveDeadNodes(SDNode *N = 0); + SDOperand getString(const std::string &Val); SDOperand getConstant(uint64_t Val, MVT::ValueType VT); SDOperand getTargetConstant(uint64_t Val, MVT::ValueType VT); SDOperand getConstantFP(double Val, MVT::ValueType VT); @@ -406,6 +407,7 @@ std::vector<SDNode*> ValueTypeNodes; std::map<std::string, SDNode*> ExternalSymbols; std::map<std::string, SDNode*> TargetExternalSymbols; + std::map<std::string, StringSDNode*> StringNodes; std::map<std::pair<unsigned, std::pair<MVT::ValueType, std::vector<SDOperand> > >, SDNode*> OneResultNodes; Index: llvm/include/llvm/CodeGen/SelectionDAGNodes.h diff -u llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.78 llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.79 --- llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.78 Tue Nov 22 12:15:59 2005 +++ llvm/include/llvm/CodeGen/SelectionDAGNodes.h Tue Nov 29 00:15:39 2005 @@ -63,7 +63,8 @@ AssertSext, AssertZext, // Various leaf nodes. - Constant, ConstantFP, GlobalAddress, FrameIndex, ConstantPool, + Constant, ConstantFP, STRING, + GlobalAddress, FrameIndex, ConstantPool, BasicBlock, ExternalSymbol, VALUETYPE, CONDCODE, Register, // TargetConstant - Like Constant, but the DAG does not do any folding or @@ -341,6 +342,12 @@ // HANDLENODE node - Used as a handle for various purposes. HANDLENODE, + // LOCATION - This node is used to represent a source location for debug + // info. It takes token chain as input, then a line number, then a column + // number, then a filename, then a working dir. It produces a token chain + // as output. + LOCATION, + // BUILTIN_OP_END - This must be the last enum value in this list. BUILTIN_OP_END, }; @@ -846,6 +853,20 @@ SDOperand getValue() const { return getOperand(0); } }; +class StringSDNode : public SDNode { + std::string Value; +protected: + friend class SelectionDAG; + StringSDNode(const std::string &val) + : SDNode(ISD::STRING, MVT::Other), Value(val) { + } +public: + const std::string &getValue() const { return Value; } + static bool classof(const StringSDNode *) { return true; } + static bool classof(const SDNode *N) { + return N->getOpcode() == ISD::STRING; + } +}; class ConstantSDNode : public SDNode { uint64_t Value; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits