mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-20 02:28:23 +00:00
Remove SDNode's virtual destructor. This makes it impossible for
SDNode subclasses to keep state that requires non-trivial destructors, however it was already effectively impossible, since the destructor isn't actually ever called. There currently aren't any SDNode subclasses affected by this, and in general it's desireable to keep SDNode objects light-weight. This eliminates the last virtual member function in the SDNode class, so it eliminates the need for a vtable pointer, making SDNode smaller. llvm-svn: 62539
This commit is contained in:
parent
5508ead868
commit
02b5657666
@ -800,6 +800,7 @@ private:
|
|||||||
void *&InsertPos);
|
void *&InsertPos);
|
||||||
|
|
||||||
void DeleteNodeNotInCSEMaps(SDNode *N);
|
void DeleteNodeNotInCSEMaps(SDNode *N);
|
||||||
|
void DeallocateNode(SDNode *N);
|
||||||
|
|
||||||
unsigned getMVTAlignment(MVT MemoryVT) const;
|
unsigned getMVTAlignment(MVT MemoryVT) const;
|
||||||
|
|
||||||
|
@ -1119,14 +1119,7 @@ private:
|
|||||||
/// addUse - add SDUse to the list of uses.
|
/// addUse - add SDUse to the list of uses.
|
||||||
void addUse(SDUse &U) { U.addToList(&Uses); }
|
void addUse(SDUse &U) { U.addToList(&Uses); }
|
||||||
|
|
||||||
// Out-of-line virtual method to give class a home.
|
|
||||||
virtual void ANCHOR();
|
|
||||||
public:
|
public:
|
||||||
virtual ~SDNode() {
|
|
||||||
assert(NumOperands == 0 && "Operand list not cleared before deletion");
|
|
||||||
NodeType = ISD::DELETED_NODE;
|
|
||||||
}
|
|
||||||
|
|
||||||
//===--------------------------------------------------------------------===//
|
//===--------------------------------------------------------------------===//
|
||||||
// Accessors
|
// Accessors
|
||||||
//
|
//
|
||||||
@ -1470,7 +1463,6 @@ inline bool SDValue::hasOneUse() const {
|
|||||||
/// UnarySDNode - This class is used for single-operand SDNodes. This is solely
|
/// UnarySDNode - This class is used for single-operand SDNodes. This is solely
|
||||||
/// to allow co-allocation of node operands with the node itself.
|
/// to allow co-allocation of node operands with the node itself.
|
||||||
class UnarySDNode : public SDNode {
|
class UnarySDNode : public SDNode {
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
SDUse Op;
|
SDUse Op;
|
||||||
public:
|
public:
|
||||||
UnarySDNode(unsigned Opc, SDVTList VTs, SDValue X)
|
UnarySDNode(unsigned Opc, SDVTList VTs, SDValue X)
|
||||||
@ -1483,7 +1475,6 @@ public:
|
|||||||
/// BinarySDNode - This class is used for two-operand SDNodes. This is solely
|
/// BinarySDNode - This class is used for two-operand SDNodes. This is solely
|
||||||
/// to allow co-allocation of node operands with the node itself.
|
/// to allow co-allocation of node operands with the node itself.
|
||||||
class BinarySDNode : public SDNode {
|
class BinarySDNode : public SDNode {
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
SDUse Ops[2];
|
SDUse Ops[2];
|
||||||
public:
|
public:
|
||||||
BinarySDNode(unsigned Opc, SDVTList VTs, SDValue X, SDValue Y)
|
BinarySDNode(unsigned Opc, SDVTList VTs, SDValue X, SDValue Y)
|
||||||
@ -1497,7 +1488,6 @@ public:
|
|||||||
/// TernarySDNode - This class is used for three-operand SDNodes. This is solely
|
/// TernarySDNode - This class is used for three-operand SDNodes. This is solely
|
||||||
/// to allow co-allocation of node operands with the node itself.
|
/// to allow co-allocation of node operands with the node itself.
|
||||||
class TernarySDNode : public SDNode {
|
class TernarySDNode : public SDNode {
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
SDUse Ops[3];
|
SDUse Ops[3];
|
||||||
public:
|
public:
|
||||||
TernarySDNode(unsigned Opc, SDVTList VTs, SDValue X, SDValue Y,
|
TernarySDNode(unsigned Opc, SDVTList VTs, SDValue X, SDValue Y,
|
||||||
@ -1516,7 +1506,6 @@ public:
|
|||||||
/// operand. This node should be directly created by end-users and not added to
|
/// operand. This node should be directly created by end-users and not added to
|
||||||
/// the AllNodes list.
|
/// the AllNodes list.
|
||||||
class HandleSDNode : public SDNode {
|
class HandleSDNode : public SDNode {
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
SDUse Op;
|
SDUse Op;
|
||||||
public:
|
public:
|
||||||
// FIXME: Remove the "noinline" attribute once <rdar://problem/5852746> is
|
// FIXME: Remove the "noinline" attribute once <rdar://problem/5852746> is
|
||||||
@ -1536,8 +1525,6 @@ public:
|
|||||||
|
|
||||||
/// Abstact virtual class for operations for memory operations
|
/// Abstact virtual class for operations for memory operations
|
||||||
class MemSDNode : public SDNode {
|
class MemSDNode : public SDNode {
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// MemoryVT - VT of in-memory value.
|
// MemoryVT - VT of in-memory value.
|
||||||
MVT MemoryVT;
|
MVT MemoryVT;
|
||||||
@ -1613,10 +1600,9 @@ public:
|
|||||||
/// AtomicSDNode - A SDNode reprenting atomic operations.
|
/// AtomicSDNode - A SDNode reprenting atomic operations.
|
||||||
///
|
///
|
||||||
class AtomicSDNode : public MemSDNode {
|
class AtomicSDNode : public MemSDNode {
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
SDUse Ops[4];
|
SDUse Ops[4];
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Opc: opcode for atomic
|
// Opc: opcode for atomic
|
||||||
// VTL: value type list
|
// VTL: value type list
|
||||||
// Chain: memory chain for operaand
|
// Chain: memory chain for operaand
|
||||||
@ -1678,7 +1664,6 @@ class AtomicSDNode : public MemSDNode {
|
|||||||
/// memory and need an associated memory operand.
|
/// memory and need an associated memory operand.
|
||||||
///
|
///
|
||||||
class MemIntrinsicSDNode : public MemSDNode {
|
class MemIntrinsicSDNode : public MemSDNode {
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
bool ReadMem; // Intrinsic reads memory
|
bool ReadMem; // Intrinsic reads memory
|
||||||
bool WriteMem; // Intrinsic writes memory
|
bool WriteMem; // Intrinsic writes memory
|
||||||
public:
|
public:
|
||||||
@ -1706,7 +1691,6 @@ public:
|
|||||||
|
|
||||||
class ConstantSDNode : public SDNode {
|
class ConstantSDNode : public SDNode {
|
||||||
const ConstantInt *Value;
|
const ConstantInt *Value;
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
ConstantSDNode(bool isTarget, const ConstantInt *val, MVT VT)
|
ConstantSDNode(bool isTarget, const ConstantInt *val, MVT VT)
|
||||||
@ -1732,7 +1716,6 @@ public:
|
|||||||
|
|
||||||
class ConstantFPSDNode : public SDNode {
|
class ConstantFPSDNode : public SDNode {
|
||||||
const ConstantFP *Value;
|
const ConstantFP *Value;
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
ConstantFPSDNode(bool isTarget, const ConstantFP *val, MVT VT)
|
ConstantFPSDNode(bool isTarget, const ConstantFP *val, MVT VT)
|
||||||
@ -1776,7 +1759,6 @@ public:
|
|||||||
class GlobalAddressSDNode : public SDNode {
|
class GlobalAddressSDNode : public SDNode {
|
||||||
GlobalValue *TheGlobal;
|
GlobalValue *TheGlobal;
|
||||||
int64_t Offset;
|
int64_t Offset;
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
GlobalAddressSDNode(bool isTarget, const GlobalValue *GA, MVT VT,
|
GlobalAddressSDNode(bool isTarget, const GlobalValue *GA, MVT VT,
|
||||||
@ -1797,7 +1779,6 @@ public:
|
|||||||
|
|
||||||
class FrameIndexSDNode : public SDNode {
|
class FrameIndexSDNode : public SDNode {
|
||||||
int FI;
|
int FI;
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
FrameIndexSDNode(int fi, MVT VT, bool isTarg)
|
FrameIndexSDNode(int fi, MVT VT, bool isTarg)
|
||||||
@ -1817,7 +1798,6 @@ public:
|
|||||||
|
|
||||||
class JumpTableSDNode : public SDNode {
|
class JumpTableSDNode : public SDNode {
|
||||||
int JTI;
|
int JTI;
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
JumpTableSDNode(int jti, MVT VT, bool isTarg)
|
JumpTableSDNode(int jti, MVT VT, bool isTarg)
|
||||||
@ -1842,7 +1822,6 @@ class ConstantPoolSDNode : public SDNode {
|
|||||||
} Val;
|
} Val;
|
||||||
int Offset; // It's a MachineConstantPoolValue if top bit is set.
|
int Offset; // It's a MachineConstantPoolValue if top bit is set.
|
||||||
unsigned Alignment;
|
unsigned Alignment;
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
ConstantPoolSDNode(bool isTarget, Constant *c, MVT VT, int o=0)
|
ConstantPoolSDNode(bool isTarget, Constant *c, MVT VT, int o=0)
|
||||||
@ -1908,7 +1887,6 @@ public:
|
|||||||
|
|
||||||
class BasicBlockSDNode : public SDNode {
|
class BasicBlockSDNode : public SDNode {
|
||||||
MachineBasicBlock *MBB;
|
MachineBasicBlock *MBB;
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
explicit BasicBlockSDNode(MachineBasicBlock *mbb)
|
explicit BasicBlockSDNode(MachineBasicBlock *mbb)
|
||||||
@ -1934,7 +1912,6 @@ public:
|
|||||||
///
|
///
|
||||||
class SrcValueSDNode : public SDNode {
|
class SrcValueSDNode : public SDNode {
|
||||||
const Value *V;
|
const Value *V;
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
/// Create a SrcValue for a general value.
|
/// Create a SrcValue for a general value.
|
||||||
@ -1957,7 +1934,6 @@ public:
|
|||||||
/// and ISD::STORE have been lowered.
|
/// and ISD::STORE have been lowered.
|
||||||
///
|
///
|
||||||
class MemOperandSDNode : public SDNode {
|
class MemOperandSDNode : public SDNode {
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
/// Create a MachineMemOperand node
|
/// Create a MachineMemOperand node
|
||||||
@ -1977,7 +1953,6 @@ public:
|
|||||||
|
|
||||||
class RegisterSDNode : public SDNode {
|
class RegisterSDNode : public SDNode {
|
||||||
unsigned Reg;
|
unsigned Reg;
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
RegisterSDNode(unsigned reg, MVT VT)
|
RegisterSDNode(unsigned reg, MVT VT)
|
||||||
@ -1998,7 +1973,6 @@ class DbgStopPointSDNode : public SDNode {
|
|||||||
unsigned Line;
|
unsigned Line;
|
||||||
unsigned Column;
|
unsigned Column;
|
||||||
Value *CU;
|
Value *CU;
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
DbgStopPointSDNode(SDValue ch, unsigned l, unsigned c,
|
DbgStopPointSDNode(SDValue ch, unsigned l, unsigned c,
|
||||||
@ -2022,7 +1996,6 @@ public:
|
|||||||
class LabelSDNode : public SDNode {
|
class LabelSDNode : public SDNode {
|
||||||
SDUse Chain;
|
SDUse Chain;
|
||||||
unsigned LabelID;
|
unsigned LabelID;
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
LabelSDNode(unsigned NodeTy, SDValue ch, unsigned id)
|
LabelSDNode(unsigned NodeTy, SDValue ch, unsigned id)
|
||||||
@ -2042,7 +2015,6 @@ public:
|
|||||||
|
|
||||||
class ExternalSymbolSDNode : public SDNode {
|
class ExternalSymbolSDNode : public SDNode {
|
||||||
const char *Symbol;
|
const char *Symbol;
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
ExternalSymbolSDNode(bool isTarget, const char *Sym, MVT VT)
|
ExternalSymbolSDNode(bool isTarget, const char *Sym, MVT VT)
|
||||||
@ -2062,7 +2034,6 @@ public:
|
|||||||
|
|
||||||
class CondCodeSDNode : public SDNode {
|
class CondCodeSDNode : public SDNode {
|
||||||
ISD::CondCode Condition;
|
ISD::CondCode Condition;
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
explicit CondCodeSDNode(ISD::CondCode Cond)
|
explicit CondCodeSDNode(ISD::CondCode Cond)
|
||||||
@ -2082,7 +2053,6 @@ public:
|
|||||||
/// future and most targets don't support it.
|
/// future and most targets don't support it.
|
||||||
class CvtRndSatSDNode : public SDNode {
|
class CvtRndSatSDNode : public SDNode {
|
||||||
ISD::CvtCode CvtCode;
|
ISD::CvtCode CvtCode;
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
explicit CvtRndSatSDNode(MVT VT, const SDValue *Ops, unsigned NumOps,
|
explicit CvtRndSatSDNode(MVT VT, const SDValue *Ops, unsigned NumOps,
|
||||||
@ -2187,7 +2157,6 @@ namespace ISD {
|
|||||||
/// ARG_FLAGSSDNode - Leaf node holding parameter flags.
|
/// ARG_FLAGSSDNode - Leaf node holding parameter flags.
|
||||||
class ARG_FLAGSSDNode : public SDNode {
|
class ARG_FLAGSSDNode : public SDNode {
|
||||||
ISD::ArgFlagsTy TheFlags;
|
ISD::ArgFlagsTy TheFlags;
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
explicit ARG_FLAGSSDNode(ISD::ArgFlagsTy Flags)
|
explicit ARG_FLAGSSDNode(ISD::ArgFlagsTy Flags)
|
||||||
@ -2211,7 +2180,6 @@ class CallSDNode : public SDNode {
|
|||||||
// will expand the size of the representation. At the moment we only
|
// will expand the size of the representation. At the moment we only
|
||||||
// need Inreg.
|
// need Inreg.
|
||||||
bool Inreg;
|
bool Inreg;
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
CallSDNode(unsigned cc, bool isvararg, bool istailcall, bool isinreg,
|
CallSDNode(unsigned cc, bool isvararg, bool istailcall, bool isinreg,
|
||||||
@ -2256,7 +2224,6 @@ public:
|
|||||||
/// to parameterize some operations.
|
/// to parameterize some operations.
|
||||||
class VTSDNode : public SDNode {
|
class VTSDNode : public SDNode {
|
||||||
MVT ValueType;
|
MVT ValueType;
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
explicit VTSDNode(MVT VT)
|
explicit VTSDNode(MVT VT)
|
||||||
@ -2323,7 +2290,6 @@ public:
|
|||||||
/// LoadSDNode - This class is used to represent ISD::LOAD nodes.
|
/// LoadSDNode - This class is used to represent ISD::LOAD nodes.
|
||||||
///
|
///
|
||||||
class LoadSDNode : public LSBaseSDNode {
|
class LoadSDNode : public LSBaseSDNode {
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
LoadSDNode(SDValue *ChainPtrOff, SDVTList VTs,
|
LoadSDNode(SDValue *ChainPtrOff, SDVTList VTs,
|
||||||
@ -2353,7 +2319,6 @@ public:
|
|||||||
/// StoreSDNode - This class is used to represent ISD::STORE nodes.
|
/// StoreSDNode - This class is used to represent ISD::STORE nodes.
|
||||||
///
|
///
|
||||||
class StoreSDNode : public LSBaseSDNode {
|
class StoreSDNode : public LSBaseSDNode {
|
||||||
virtual void ANCHOR(); // Out-of-line virtual method to give class a home.
|
|
||||||
protected:
|
protected:
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
StoreSDNode(SDValue *ChainValuePtrOff, SDVTList VTs,
|
StoreSDNode(SDValue *ChainValuePtrOff, SDVTList VTs,
|
||||||
|
@ -557,14 +557,7 @@ void SelectionDAG::RemoveDeadNodes(SmallVectorImpl<SDNode *> &DeadNodes,
|
|||||||
DeadNodes.push_back(Operand);
|
DeadNodes.push_back(Operand);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (N->OperandsNeedDelete)
|
DeallocateNode(N);
|
||||||
delete[] N->OperandList;
|
|
||||||
|
|
||||||
N->OperandList = 0;
|
|
||||||
N->NumOperands = 0;
|
|
||||||
|
|
||||||
// Finally, remove N itself.
|
|
||||||
NodeAllocator.Deallocate(AllNodes.remove(N));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -585,16 +578,23 @@ void SelectionDAG::DeleteNode(SDNode *N) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SelectionDAG::DeleteNodeNotInCSEMaps(SDNode *N) {
|
void SelectionDAG::DeleteNodeNotInCSEMaps(SDNode *N) {
|
||||||
|
assert(N != AllNodes.begin());
|
||||||
|
|
||||||
// Drop all of the operands and decrement used node's use counts.
|
// Drop all of the operands and decrement used node's use counts.
|
||||||
for (SDNode::op_iterator I = N->op_begin(), E = N->op_end(); I != E; ++I)
|
for (SDNode::op_iterator I = N->op_begin(), E = N->op_end(); I != E; ++I)
|
||||||
I->getVal()->removeUser(std::distance(N->op_begin(), I), N);
|
I->getVal()->removeUser(std::distance(N->op_begin(), I), N);
|
||||||
|
|
||||||
if (N->OperandsNeedDelete) {
|
DeallocateNode(N);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SelectionDAG::DeallocateNode(SDNode *N) {
|
||||||
|
if (N->OperandsNeedDelete)
|
||||||
delete[] N->OperandList;
|
delete[] N->OperandList;
|
||||||
N->OperandList = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
assert(N != AllNodes.begin());
|
// Set the opcode to DELETED_NODE to help catch bugs when node
|
||||||
|
// memory is reallocated.
|
||||||
|
N->NodeType = ISD::DELETED_NODE;
|
||||||
|
|
||||||
NodeAllocator.Deallocate(AllNodes.remove(N));
|
NodeAllocator.Deallocate(AllNodes.remove(N));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -786,17 +786,8 @@ SelectionDAG::~SelectionDAG() {
|
|||||||
void SelectionDAG::allnodes_clear() {
|
void SelectionDAG::allnodes_clear() {
|
||||||
assert(&*AllNodes.begin() == &EntryNode);
|
assert(&*AllNodes.begin() == &EntryNode);
|
||||||
AllNodes.remove(AllNodes.begin());
|
AllNodes.remove(AllNodes.begin());
|
||||||
while (!AllNodes.empty()) {
|
while (!AllNodes.empty())
|
||||||
SDNode *N = AllNodes.remove(AllNodes.begin());
|
DeallocateNode(AllNodes.begin());
|
||||||
N->SetNextInBucket(0);
|
|
||||||
|
|
||||||
if (N->OperandsNeedDelete) {
|
|
||||||
delete [] N->OperandList;
|
|
||||||
N->OperandList = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
NodeAllocator.Deallocate(N);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SelectionDAG::clear() {
|
void SelectionDAG::clear() {
|
||||||
@ -4737,36 +4728,6 @@ unsigned SelectionDAG::AssignTopologicalOrder() {
|
|||||||
// SDNode Class
|
// SDNode Class
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
// Out-of-line virtual method to give class a home.
|
|
||||||
void SDNode::ANCHOR() {}
|
|
||||||
void UnarySDNode::ANCHOR() {}
|
|
||||||
void BinarySDNode::ANCHOR() {}
|
|
||||||
void TernarySDNode::ANCHOR() {}
|
|
||||||
void HandleSDNode::ANCHOR() {}
|
|
||||||
void ConstantSDNode::ANCHOR() {}
|
|
||||||
void ConstantFPSDNode::ANCHOR() {}
|
|
||||||
void GlobalAddressSDNode::ANCHOR() {}
|
|
||||||
void FrameIndexSDNode::ANCHOR() {}
|
|
||||||
void JumpTableSDNode::ANCHOR() {}
|
|
||||||
void ConstantPoolSDNode::ANCHOR() {}
|
|
||||||
void BasicBlockSDNode::ANCHOR() {}
|
|
||||||
void SrcValueSDNode::ANCHOR() {}
|
|
||||||
void MemOperandSDNode::ANCHOR() {}
|
|
||||||
void RegisterSDNode::ANCHOR() {}
|
|
||||||
void DbgStopPointSDNode::ANCHOR() {}
|
|
||||||
void LabelSDNode::ANCHOR() {}
|
|
||||||
void ExternalSymbolSDNode::ANCHOR() {}
|
|
||||||
void CondCodeSDNode::ANCHOR() {}
|
|
||||||
void ARG_FLAGSSDNode::ANCHOR() {}
|
|
||||||
void VTSDNode::ANCHOR() {}
|
|
||||||
void MemSDNode::ANCHOR() {}
|
|
||||||
void LoadSDNode::ANCHOR() {}
|
|
||||||
void StoreSDNode::ANCHOR() {}
|
|
||||||
void AtomicSDNode::ANCHOR() {}
|
|
||||||
void MemIntrinsicSDNode::ANCHOR() {}
|
|
||||||
void CallSDNode::ANCHOR() {}
|
|
||||||
void CvtRndSatSDNode::ANCHOR() {}
|
|
||||||
|
|
||||||
HandleSDNode::~HandleSDNode() {
|
HandleSDNode::~HandleSDNode() {
|
||||||
DropOperands();
|
DropOperands();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user