Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:CGF

23 static void EmitDeclInit(CodeGenFunction &CGF, const VarDecl &D,
29 ASTContext &Context = CGF.getContext();
33 LValue lv = CGF.MakeAddrLValue(DeclPtr, type, alignment);
36 if (!CGF.hasAggregateLLVMType(type)) {
37 CodeGenModule &CGM = CGF.CGM;
39 CGM.getObjCRuntime().EmitObjCGlobalAssign(CGF, CGF.EmitScalarExpr(Init),
42 CGM.getObjCRuntime().EmitObjCWeakAssign(CGF, CGF.EmitScalarExpr(Init),
45 CGF.EmitScalarInit(Init, &D, lv, false);
47 CGF.EmitComplexExprIntoAddr(Init, DeclPtr, lv.isVolatile());
49 CGF.EmitAggExpr(Init, AggValueSlot::forLValue(lv,AggValueSlot::IsDestructed,
57 static void EmitDeclDestroy(CodeGenFunction &CGF, const VarDecl &D,
59 CodeGenModule &CGM = CGF.CGM;
96 CGF.getDestroyer(dtorKind),
97 CGF.needsEHCleanup(dtorKind));
98 argument = llvm::Constant::getNullValue(CGF.Int8PtrTy);
101 CGF.EmitCXXGlobalDtorRegistration(function, argument);
106 static void EmitDeclInvariant(CodeGenFunction &CGF, const VarDecl &D,
109 if (!CGF.CGM.getCodeGenOpts().OptimizationLevel)
114 llvm::Constant *InvariantStart = CGF.CGM.getIntrinsic(InvStartID);
117 CharUnits WidthChars = CGF.getContext().getTypeSizeInChars(D.getType());
119 llvm::Value *Args[2] = { llvm::ConstantInt::getSigned(CGF.Int64Ty, Width),
120 llvm::ConstantExpr::getBitCast(Addr, CGF.Int8PtrTy)};
121 CGF.Builder.CreateCall(InvariantStart, Args);
149 static void emitGlobalDtorWithCXAAtExit(CodeGenFunction &CGF,
156 llvm::FunctionType::get(CGF.VoidTy, CGF.Int8PtrTy, false)->getPointerTo();
159 llvm::Type *paramTys[] = { dtorTy, CGF.Int8PtrTy, CGF.Int8PtrTy };
161 llvm::FunctionType::get(CGF.IntTy, paramTys, false);
165 CGF.CGM.CreateRuntimeFunction(atexitTy, "__cxa_atexit");
171 CGF.CGM.CreateRuntimeVariable(CGF.Int8Ty, "__dso_handle");
175 llvm::ConstantExpr::getBitCast(addr, CGF.Int8PtrTy),
178 CGF.Builder.CreateCall(atexit, args);
197 CodeGenFunction CGF(CGM);
199 CGF.StartFunction(GlobalDecl(), CGM.getContext().VoidTy, fn,
203 llvm::CallInst *call = CGF.Builder.CreateCall(dtor, addr);
210 CGF.FinishFunction();
216 static void emitGlobalDtorWithAtExit(CodeGenFunction &CGF,
220 llvm::Constant *dtorStub = createAtExitStub(CGF.CGM, dtor, addr);
224 llvm::FunctionType::get(CGF.IntTy, dtorStub->getType(), false);
227 CGF.CGM.CreateRuntimeFunction(atexitTy, "atexit");
231 CGF.Builder.CreateCall(atexit, dtorStub);