Fold the useful features of alist and alist_node into ilist, and
a new ilist_node class, and remove them. Unlike alist_node, ilist_node doesn't attempt to manage storage itself, so it avoids the associated problems, including being opaque in gdb. Adjust the Recycler class so that it doesn't depend on alist_node. Also, change it to use explicit Size and Align parameters, allowing it to work when the largest-sized node doesn't have the greatest alignment requirement. Change MachineInstr's MachineMemOperand list from a pool-backed alist to a std::list for now. llvm-svn: 54146
This commit is contained in:
@@ -102,7 +102,7 @@ FunctionPass *llvm::createMachineCodeDeleter() {
|
||||
// MachineFunction implementation
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
void alist_traits<MachineBasicBlock>::deleteNode(MachineBasicBlock *MBB) {
|
||||
void ilist_traits<MachineBasicBlock>::deleteNode(MachineBasicBlock *MBB) {
|
||||
MBB->getParent()->DeleteMachineBasicBlock(MBB);
|
||||
}
|
||||
|
||||
@@ -131,7 +131,6 @@ MachineFunction::~MachineFunction() {
|
||||
BasicBlocks.clear();
|
||||
InstructionRecycler.clear(Allocator);
|
||||
BasicBlockRecycler.clear(Allocator);
|
||||
MemOperandRecycler.clear(Allocator);
|
||||
RegInfo->~MachineRegisterInfo(); Allocator.Deallocate(RegInfo);
|
||||
if (MFInfo) {
|
||||
MFInfo->~MachineFunctionInfo(); Allocator.Deallocate(MFInfo);
|
||||
@@ -234,23 +233,6 @@ MachineFunction::DeleteMachineBasicBlock(MachineBasicBlock *MBB) {
|
||||
BasicBlockRecycler.Deallocate(Allocator, MBB);
|
||||
}
|
||||
|
||||
/// CreateMachineMemOperand - Allocate a new MachineMemOperand. Use this
|
||||
/// instead of `new MachineMemOperand'.
|
||||
///
|
||||
MachineMemOperand *
|
||||
MachineFunction::CreateMachineMemOperand(const MachineMemOperand &MMO) {
|
||||
return new (MemOperandRecycler.Allocate<MachineMemOperand>(Allocator))
|
||||
MachineMemOperand(MMO);
|
||||
}
|
||||
|
||||
/// DeleteMachineMemOperand - Delete the given MachineMemOperand.
|
||||
///
|
||||
void
|
||||
MachineFunction::DeleteMachineMemOperand(MachineMemOperand *MO) {
|
||||
MO->~MachineMemOperand();
|
||||
MemOperandRecycler.Deallocate(Allocator, MO);
|
||||
}
|
||||
|
||||
void MachineFunction::dump() const {
|
||||
print(*cerr.stream());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user