diff options
author | Evan Cheng <evan.cheng@apple.com> | 2005-11-30 02:04:11 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2005-11-30 02:04:11 +0000 |
commit | 61ca74bc3a29b2af2be7e4bd612289da8aae85b5 (patch) | |
tree | 896f6424b7503bc1de07fe094ef7e2435e50c570 /include/llvm/CodeGen/SelectionDAGNodes.h | |
parent | 345c3f370d56477fd2ab3f742f36e6d8fd4f82fa (diff) |
Added an index field to GlobalAddressSDNode so it can represent X+12, etc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24523 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/SelectionDAGNodes.h')
-rw-r--r-- | include/llvm/CodeGen/SelectionDAGNodes.h | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/include/llvm/CodeGen/SelectionDAGNodes.h b/include/llvm/CodeGen/SelectionDAGNodes.h index f6a6201678..b9cfa1930c 100644 --- a/include/llvm/CodeGen/SelectionDAGNodes.h +++ b/include/llvm/CodeGen/SelectionDAGNodes.h @@ -795,6 +795,21 @@ protected: Op2.Val->Uses.push_back(this); Op3.Val->Uses.push_back(this); Op4.Val->Uses.push_back(this); } + void setOperands(SDOperand Op0, SDOperand Op1, SDOperand Op2, SDOperand Op3, + SDOperand Op4, SDOperand Op5) { + assert(NumOperands == 0 && "Should not have operands yet!"); + OperandList = new SDOperand[6]; + OperandList[0] = Op0; + OperandList[1] = Op1; + OperandList[2] = Op2; + OperandList[3] = Op3; + OperandList[4] = Op4; + OperandList[5] = Op5; + NumOperands = 6; + Op0.Val->Uses.push_back(this); Op1.Val->Uses.push_back(this); + Op2.Val->Uses.push_back(this); Op3.Val->Uses.push_back(this); + Op4.Val->Uses.push_back(this); Op5.Val->Uses.push_back(this); + } void addUser(SDNode *User) { Uses.push_back(User); } @@ -923,15 +938,19 @@ public: class GlobalAddressSDNode : public SDNode { GlobalValue *TheGlobal; + int offset; protected: friend class SelectionDAG; - GlobalAddressSDNode(bool isTarget, const GlobalValue *GA, MVT::ValueType VT) + GlobalAddressSDNode(bool isTarget, const GlobalValue *GA, MVT::ValueType VT, + int o=0) : SDNode(isTarget ? ISD::TargetGlobalAddress : ISD::GlobalAddress, VT) { TheGlobal = const_cast<GlobalValue*>(GA); + offset = o; } public: GlobalValue *getGlobal() const { return TheGlobal; } + int getOffset() const { return offset; } static bool classof(const GlobalAddressSDNode *) { return true; } static bool classof(const SDNode *N) { |