[cfe-commits] r99038 - in /cfe/trunk/lib/CodeGen: CGDeclCXX.cpp CodeGenFunction.h
Daniel Dunbar
daniel at zuster.org
Sat Mar 20 00:52:35 PDT 2010
Oops, this was committed by mistake -- the next commit reverts it.
- Daniel
On Fri, Mar 19, 2010 at 9:15 PM, Daniel Dunbar <daniel at zuster.org> 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
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
More information about the cfe-commits
mailing list