Oops, this was committed by mistake -- the next commit reverts it. - Daniel
On Fri, Mar 19, 2010 at 9:15 PM, Daniel Dunbar <[email protected]> wrote: > Author: ddunbar > Date: Fri Mar 19 23:15:29 2010 > New Revision: 99038 > > URL: http://llvm.org/viewvc/llvm-project?rev=99038&view=rev > Log: > IRgen: Inline GenerateCXXGlobal[VarDecl]InitFunc into sole caller. > > Modified: > cfe/trunk/lib/CodeGen/CGDeclCXX.cpp > cfe/trunk/lib/CodeGen/CodeGenFunction.h > > Modified: cfe/trunk/lib/CodeGen/CGDeclCXX.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDeclCXX.cpp?rev=99038&r1=99037&r2=99038&view=diff > ============================================================================== > --- cfe/trunk/lib/CodeGen/CGDeclCXX.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGDeclCXX.cpp Fri Mar 19 23:15:29 2010 > @@ -64,7 +64,7 @@ > llvm::Type::getInt8PtrTy(CGM.getLLVMContext()); > DeclPtr = llvm::Constant::getNullValue(Int8PtrTy); > } else > - DtorFn = CGM.GetAddrOfCXXDestructor(Dtor, Dtor_Complete); > + DtorFn = CGM.GetAddrOfCXXDestructor(Dtor, Dtor_Complete); > > CGF.EmitCXXGlobalDtorRegistration(DtorFn, DeclPtr); > } > @@ -89,9 +89,8 @@ > "global variable that binds reference to a non-lvalue"); > } > > -void > -CodeGenFunction::EmitCXXGlobalDtorRegistration(llvm::Constant *DtorFn, > - llvm::Constant *DeclPtr) { > +void CodeGenFunction::EmitCXXGlobalDtorRegistration(llvm::Constant *DtorFn, > + llvm::Constant *DeclPtr) > { > const llvm::Type *Int8PtrTy = > llvm::Type::getInt8Ty(VMContext)->getPointerTo(); > > @@ -124,8 +123,7 @@ > Builder.CreateCall(AtExitFn, &Args[0], llvm::array_endof(Args)); > } > > -void > -CodeGenModule::EmitCXXGlobalVarDeclInitFunc(const VarDecl *D) { > +void CodeGenModule::EmitCXXGlobalVarDeclInitFunc(const VarDecl *D) { > const llvm::FunctionType *FTy > = llvm::FunctionType::get(llvm::Type::getVoidTy(VMContext), > false); > @@ -135,13 +133,18 @@ > llvm::Function::Create(FTy, llvm::GlobalValue::InternalLinkage, > "__cxx_global_var_init", &TheModule); > > - CodeGenFunction(*this).GenerateCXXGlobalVarDeclInitFunc(Fn, D); > + StartFunction(GlobalDecl(), getContext().VoidTy, Fn, FunctionArgList(), > + SourceLocation()); > + > + llvm::Constant *DeclPtr = CGM.GetAddrOfGlobalVar(D); > + EmitCXXGlobalVarDeclInit(*D, DeclPtr); > + > + FinishFunction(); > > CXXGlobalInits.push_back(Fn); > } > > -void > -CodeGenModule::EmitCXXGlobalInitFunc() { > +void CodeGenModule::EmitCXXGlobalInitFunc() { > if (CXXGlobalInits.empty()) > return; > > @@ -155,33 +158,15 @@ > llvm::Function::Create(FTy, llvm::GlobalValue::InternalLinkage, > "__cxx_global_initialization", &TheModule); > > - CodeGenFunction(*this).GenerateCXXGlobalInitFunc(Fn, > - &CXXGlobalInits[0], > - CXXGlobalInits.size()); > - AddGlobalCtor(Fn); > -} > - > -void CodeGenFunction::GenerateCXXGlobalVarDeclInitFunc(llvm::Function *Fn, > - const VarDecl *D) { > StartFunction(GlobalDecl(), getContext().VoidTy, Fn, FunctionArgList(), > SourceLocation()); > > - llvm::Constant *DeclPtr = CGM.GetAddrOfGlobalVar(D); > - EmitCXXGlobalVarDeclInit(*D, DeclPtr); > + for (unsigned i = 0, e = CXXGlobalInits.size(); i != e; ++i) > + Builder.CreateCall(CXXGlobalInits[i]); > > FinishFunction(); > -} > > -void CodeGenFunction::GenerateCXXGlobalInitFunc(llvm::Function *Fn, > - llvm::Constant **Decls, > - unsigned NumDecls) { > - StartFunction(GlobalDecl(), getContext().VoidTy, Fn, FunctionArgList(), > - SourceLocation()); > - > - for (unsigned i = 0; i != NumDecls; ++i) > - Builder.CreateCall(Decls[i]); > - > - FinishFunction(); > + AddGlobalCtor(Fn); > } > > static llvm::Constant *getGuardAcquireFn(CodeGenFunction &CGF) { > > Modified: cfe/trunk/lib/CodeGen/CodeGenFunction.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenFunction.h?rev=99038&r1=99037&r2=99038&view=diff > ============================================================================== > --- cfe/trunk/lib/CodeGen/CodeGenFunction.h (original) > +++ cfe/trunk/lib/CodeGen/CodeGenFunction.h Fri Mar 19 23:15:29 2010 > @@ -1225,14 +1225,6 @@ > void EmitCXXGlobalDtorRegistration(llvm::Constant *DtorFn, > llvm::Constant *DeclPtr); > > - /// GenerateCXXGlobalInitFunc - Generates code for initializing global > - /// variables. > - void GenerateCXXGlobalInitFunc(llvm::Function *Fn, > - llvm::Constant **Decls, > - unsigned NumDecls); > - > - void GenerateCXXGlobalVarDeclInitFunc(llvm::Function *Fn, const VarDecl > *D); > - > void EmitCXXConstructExpr(llvm::Value *Dest, const CXXConstructExpr *E); > > RValue EmitCXXExprWithTemporaries(const CXXExprWithTemporaries *E, > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
