From 5f6baf78ea26168d328444f15bc1da355afd88a8 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 12 Sep 2001 16:34:03 +0000 Subject: [PATCH] More cleanups, preparing to revamp InstrForest to, among other things, not leak all its allocated memory. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@553 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/CodeGen/InstrForest.h | 2 +- lib/CodeGen/InstrSelection/InstrForest.cpp | 13 ++++++------- lib/CodeGen/InstrSelection/InstrSelection.cpp | 7 +++---- lib/CodeGen/TargetMachine/Sparc/Sparc.burg | 2 -- lib/Target/SparcV9/InstrSelection/InstrForest.cpp | 13 ++++++------- .../SparcV9/InstrSelection/InstrSelection.cpp | 7 +++---- 6 files changed, 19 insertions(+), 25 deletions(-) diff --git a/include/llvm/CodeGen/InstrForest.h b/include/llvm/CodeGen/InstrForest.h index e987521ea04..47a12ace6b7 100644 --- a/include/llvm/CodeGen/InstrForest.h +++ b/include/llvm/CodeGen/InstrForest.h @@ -238,7 +238,7 @@ class InstrForest : private hash_map { hash_set treeRoots; public: - void buildTreesForMethod(Method *M); + InstrForest(Method *M); inline InstructionNode *getTreeNodeForInstr(Instruction* instr) { return (*this)[instr]; diff --git a/lib/CodeGen/InstrSelection/InstrForest.cpp b/lib/CodeGen/InstrSelection/InstrForest.cpp index 50c4f987217..0ecf1c2fe99 100644 --- a/lib/CodeGen/InstrSelection/InstrForest.cpp +++ b/lib/CodeGen/InstrSelection/InstrForest.cpp @@ -176,11 +176,6 @@ inline void InstrForest::setRightChild(InstrTreeNode *Par, InstrTreeNode *Chld){ } -void InstrForest::buildTreesForMethod(Method *M) { - for_each(M->inst_begin(), M->inst_end(), - bind_obj(this, &InstrForest::buildTreeForInstruction)); -} - InstructionNode *InstrForest::buildTreeForInstruction(Instruction *Inst) { InstructionNode *treeNode = getTreeNodeForInstr(Inst); if (treeNode) { @@ -210,8 +205,7 @@ InstructionNode *InstrForest::buildTreeForInstruction(Instruction *Inst) { static InstrTreeNode *fixedChildArray[MAX_CHILD]; InstrTreeNode **childArray = (Inst->getNumOperands() > MAX_CHILD) - ? new (InstrTreeNode*)[Inst->getNumOperands()] - : fixedChildArray; + ? new (InstrTreeNode*)[Inst->getNumOperands()] : fixedChildArray; // // Walk the operands of the instruction @@ -309,3 +303,8 @@ InstructionNode *InstrForest::buildTreeForInstruction(Instruction *Inst) { return treeNode; } + +InstrForest::InstrForest(Method *M) { + for_each(M->inst_begin(), M->inst_end(), + bind_obj(this, &InstrForest::buildTreeForInstruction)); +} diff --git a/lib/CodeGen/InstrSelection/InstrSelection.cpp b/lib/CodeGen/InstrSelection/InstrSelection.cpp index 675e489e460..b77b5a8b4e5 100644 --- a/lib/CodeGen/InstrSelection/InstrSelection.cpp +++ b/lib/CodeGen/InstrSelection/InstrSelection.cpp @@ -31,11 +31,11 @@ enum SelectDebugLevel_t { }; // Enable Debug Options to be specified on the command line -cl::Enum SelectDebugLevel("dselect", cl::NoFlags, // cl::Hidden +cl::Enum SelectDebugLevel("dselect", cl::NoFlags, "enable instruction selection debugging information", clEnumValN(Select_NoDebugInfo, "n", "disable debug output"), clEnumValN(Select_PrintMachineCode, "y", "print generated machine code"), - clEnumValN(Select_DebugInstTrees, "i", "print instr. selection debugging info"), + clEnumValN(Select_DebugInstTrees, "i", "print instruction selection debug info"), clEnumValN(Select_DebugBurgTrees, "b", "print burg trees"), 0); @@ -54,8 +54,7 @@ SelectInstructionsForMethod(Method* method, // // Build the instruction trees to be given as inputs to BURG. // - InstrForest instrForest; - instrForest.buildTreesForMethod(method); + InstrForest instrForest(method); if (SelectDebugLevel >= Select_DebugInstTrees) { diff --git a/lib/CodeGen/TargetMachine/Sparc/Sparc.burg b/lib/CodeGen/TargetMachine/Sparc/Sparc.burg index a40a9bb1fb8..c554f2fff31 100644 --- a/lib/CodeGen/TargetMachine/Sparc/Sparc.burg +++ b/lib/CodeGen/TargetMachine/Sparc/Sparc.burg @@ -220,8 +220,6 @@ reg: Constant = 72 (3); /* prefer direct use */ * This code was taken from sample.gr provided with BURG. *-----------------------------------------------------------------------*/ -static char rcsid[] = "$Id$"; - void printcover(NODEPTR_TYPE p, int goalnt, int indent) { int eruleno = burm_rule(STATE_LABEL(p), goalnt); short *nts = burm_nts[eruleno]; diff --git a/lib/Target/SparcV9/InstrSelection/InstrForest.cpp b/lib/Target/SparcV9/InstrSelection/InstrForest.cpp index 50c4f987217..0ecf1c2fe99 100644 --- a/lib/Target/SparcV9/InstrSelection/InstrForest.cpp +++ b/lib/Target/SparcV9/InstrSelection/InstrForest.cpp @@ -176,11 +176,6 @@ inline void InstrForest::setRightChild(InstrTreeNode *Par, InstrTreeNode *Chld){ } -void InstrForest::buildTreesForMethod(Method *M) { - for_each(M->inst_begin(), M->inst_end(), - bind_obj(this, &InstrForest::buildTreeForInstruction)); -} - InstructionNode *InstrForest::buildTreeForInstruction(Instruction *Inst) { InstructionNode *treeNode = getTreeNodeForInstr(Inst); if (treeNode) { @@ -210,8 +205,7 @@ InstructionNode *InstrForest::buildTreeForInstruction(Instruction *Inst) { static InstrTreeNode *fixedChildArray[MAX_CHILD]; InstrTreeNode **childArray = (Inst->getNumOperands() > MAX_CHILD) - ? new (InstrTreeNode*)[Inst->getNumOperands()] - : fixedChildArray; + ? new (InstrTreeNode*)[Inst->getNumOperands()] : fixedChildArray; // // Walk the operands of the instruction @@ -309,3 +303,8 @@ InstructionNode *InstrForest::buildTreeForInstruction(Instruction *Inst) { return treeNode; } + +InstrForest::InstrForest(Method *M) { + for_each(M->inst_begin(), M->inst_end(), + bind_obj(this, &InstrForest::buildTreeForInstruction)); +} diff --git a/lib/Target/SparcV9/InstrSelection/InstrSelection.cpp b/lib/Target/SparcV9/InstrSelection/InstrSelection.cpp index 675e489e460..b77b5a8b4e5 100644 --- a/lib/Target/SparcV9/InstrSelection/InstrSelection.cpp +++ b/lib/Target/SparcV9/InstrSelection/InstrSelection.cpp @@ -31,11 +31,11 @@ enum SelectDebugLevel_t { }; // Enable Debug Options to be specified on the command line -cl::Enum SelectDebugLevel("dselect", cl::NoFlags, // cl::Hidden +cl::Enum SelectDebugLevel("dselect", cl::NoFlags, "enable instruction selection debugging information", clEnumValN(Select_NoDebugInfo, "n", "disable debug output"), clEnumValN(Select_PrintMachineCode, "y", "print generated machine code"), - clEnumValN(Select_DebugInstTrees, "i", "print instr. selection debugging info"), + clEnumValN(Select_DebugInstTrees, "i", "print instruction selection debug info"), clEnumValN(Select_DebugBurgTrees, "b", "print burg trees"), 0); @@ -54,8 +54,7 @@ SelectInstructionsForMethod(Method* method, // // Build the instruction trees to be given as inputs to BURG. // - InstrForest instrForest; - instrForest.buildTreesForMethod(method); + InstrForest instrForest(method); if (SelectDebugLevel >= Select_DebugInstTrees) {