From: Chris Lattner Date: Fri, 6 Sep 2002 21:33:15 +0000 (+0000) Subject: Move code out of header files into .cpp files to make future changes easier X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=bded132d00ed626a6541b67ad101ef0fd47d3491;p=oota-llvm.git Move code out of header files into .cpp files to make future changes easier git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3605 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/VMCore/BasicBlock.cpp b/lib/VMCore/BasicBlock.cpp index d0859f87432..4271f32e7ac 100644 --- a/lib/VMCore/BasicBlock.cpp +++ b/lib/VMCore/BasicBlock.cpp @@ -48,6 +48,9 @@ iplist &ilist_traits::getList(BasicBlock *BB) { template SymbolTableListTraits; +// BasicBlock ctor - If the function parameter is specified, the basic block is +// automatically inserted at the end of the function. +// BasicBlock::BasicBlock(const std::string &name, Function *Parent) : Value(Type::LabelTy, Value::BasicBlockVal, name) { // Initialize the instlist... @@ -62,6 +65,10 @@ BasicBlock::~BasicBlock() { InstList.clear(); } +void BasicBlock::setParent(Function *parent) { + InstList.setParent(parent); +} + // Specialize setName to take care of symbol table majik void BasicBlock::setName(const std::string &name, SymbolTable *ST) { Function *P; diff --git a/lib/VMCore/Function.cpp b/lib/VMCore/Function.cpp index 3ad7a66c5ce..59017178f68 100644 --- a/lib/VMCore/Function.cpp +++ b/lib/VMCore/Function.cpp @@ -10,6 +10,10 @@ #include "llvm/iOther.h" #include "SymbolTableListTraitsImpl.h" +BasicBlock *ilist_traits::createNode() { + return new BasicBlock(); +} + iplist &ilist_traits::getList(Function *F) { return F->getBasicBlockList(); } @@ -31,6 +35,14 @@ template SymbolTableListTraits; // Argument Implementation //===----------------------------------------------------------------------===// +Argument::Argument(const Type *Ty, const std::string &Name = "", Function *Par) + : Value(Ty, Value::ArgumentVal, Name) { + Parent = 0; + if (Par) + Par->getArgumentList().push_back(this); +} + + // Specialize setName to take care of symbol table majik void Argument::setName(const std::string &name, SymbolTable *ST) { Function *P; @@ -41,11 +53,15 @@ void Argument::setName(const std::string &name, SymbolTable *ST) { if (P && hasName()) P->getSymbolTable()->insert(this); } +void Argument::setParent(Function *parent) { + Parent = parent; +} + + //===----------------------------------------------------------------------===// // Function Implementation //===----------------------------------------------------------------------===// - Function::Function(const FunctionType *Ty, bool isInternal, const std::string &name, Module *ParentModule) : GlobalValue(PointerType::get(Ty), Value::FunctionVal, isInternal, name) { @@ -136,10 +152,17 @@ void Function::dropAllReferences() { GlobalVariable::GlobalVariable(const Type *Ty, bool constant, bool isIntern, Constant *Initializer, - const std::string &Name) + const std::string &Name, Module *ParentModule) : GlobalValue(PointerType::get(Ty), Value::GlobalVariableVal, isIntern, Name), isConstantGlobal(constant) { if (Initializer) Operands.push_back(Use((Value*)Initializer, this)); + + if (ParentModule) + ParentModule->getGlobalList().push_back(this); +} + +void GlobalVariable::setParent(Module *parent) { + Parent = parent; } // Specialize setName to take care of symbol table majik diff --git a/lib/VMCore/Instruction.cpp b/lib/VMCore/Instruction.cpp index e6ff3d28d2d..2c7f6eae91f 100644 --- a/lib/VMCore/Instruction.cpp +++ b/lib/VMCore/Instruction.cpp @@ -14,6 +14,10 @@ Instruction::Instruction(const Type *ty, unsigned it, const std::string &Name) iType = it; } +void Instruction::setParent(BasicBlock *P) { + Parent = P; +} + // Specialize setName to take care of symbol table majik void Instruction::setName(const std::string &name, SymbolTable *ST) { BasicBlock *P = 0; Function *PP = 0;