Lines Matching refs:CGF

54 LValue CGObjCRuntime::EmitValueForIvarAtOffset(CodeGen::CodeGenFunction &CGF,  in EmitValueForIvarAtOffset()  argument
63 CGF.CGM.getContext().getObjCObjectPointerType(InterfaceTy); in EmitValueForIvarAtOffset()
66 llvm::Type *LTy = CGF.CGM.getTypes().ConvertTypeForMem(IvarTy); in EmitValueForIvarAtOffset()
67 llvm::Value *V = CGF.Builder.CreateBitCast(BaseValue, CGF.Int8PtrTy); in EmitValueForIvarAtOffset()
68 V = CGF.Builder.CreateInBoundsGEP(CGF.Int8Ty, V, Offset, "add.ptr"); in EmitValueForIvarAtOffset()
71 V = CGF.Builder.CreateBitCast(V, llvm::PointerType::getUnqual(LTy)); in EmitValueForIvarAtOffset()
72 LValue LV = CGF.MakeNaturalAlignAddrLValue(V, IvarTy); in EmitValueForIvarAtOffset()
91 CGF.CGM.getContext().lookupFieldBitOffset(OID, nullptr, Ivar); in EmitValueForIvarAtOffset()
92 uint64_t BitOffset = FieldBitOffset % CGF.CGM.getContext().getCharWidth(); in EmitValueForIvarAtOffset()
93 uint64_t AlignmentBits = CGF.CGM.getTarget().getCharAlign(); in EmitValueForIvarAtOffset()
94 uint64_t BitFieldSize = Ivar->getBitWidthValue(CGF.getContext()); in EmitValueForIvarAtOffset()
95 CharUnits StorageSize = CGF.CGM.getContext().toCharUnitsFromBits( in EmitValueForIvarAtOffset()
97 CharUnits Alignment = CGF.CGM.getContext().toCharUnitsFromBits(AlignmentBits); in EmitValueForIvarAtOffset()
105 CGBitFieldInfo *Info = new (CGF.CGM.getContext()) CGBitFieldInfo( in EmitValueForIvarAtOffset()
106 CGBitFieldInfo::MakeInfo(CGF.CGM.getTypes(), Ivar, BitOffset, BitFieldSize, in EmitValueForIvarAtOffset()
107 CGF.CGM.getContext().toBits(StorageSize), in EmitValueForIvarAtOffset()
110 Address Addr = Address(V, CGF.Int8Ty, Alignment); in EmitValueForIvarAtOffset()
111 Addr = CGF.Builder.CreateElementBitCast(Addr, in EmitValueForIvarAtOffset()
112 llvm::Type::getIntNTy(CGF.getLLVMContext(), in EmitValueForIvarAtOffset()
135 void Emit(CodeGenFunction &CGF, Flags flags) override { in Emit()
137 CGF.EmitRuntimeCallOrInvoke(Fn); in Emit()
139 CGF.EmitNounwindRuntimeCall(Fn); in Emit()
144 void CGObjCRuntime::EmitTryCatchStmt(CodeGenFunction &CGF, in EmitTryCatchStmt() argument
152 Cont = CGF.getJumpDestInCurrentScope("eh.cont"); in EmitTryCatchStmt()
154 bool useFunclets = EHPersonality::get(CGF).usesFuncletPads(); in EmitTryCatchStmt()
159 FinallyInfo.enter(CGF, Finally->getFinallyBody(), in EmitTryCatchStmt()
174 Handler.Block = CGF.createBasicBlock("catch"); in EmitTryCatchStmt()
189 EHCatchScope *Catch = CGF.EHStack.pushCatch(Handlers.size()); in EmitTryCatchStmt()
197 if (!CGF.CurSEHParent) in EmitTryCatchStmt()
198 CGF.CurSEHParent = cast<NamedDecl>(CGF.CurFuncDecl); in EmitTryCatchStmt()
201 HelperCGF.startOutlinedSEHHelper(CGF, /*isFilter*/false, FinallyBlock); in EmitTryCatchStmt()
212 CGF.pushSEHCleanup(NormalAndEHCleanup, FinallyFunc); in EmitTryCatchStmt()
217 CGF.EmitStmt(S.getTryBody()); in EmitTryCatchStmt()
221 CGF.popCatchScope(); in EmitTryCatchStmt()
224 CGBuilderTy::InsertPoint SavedIP = CGF.Builder.saveAndClearIP(); in EmitTryCatchStmt()
230 CGF.EmitBlock(Handler.Block); in EmitTryCatchStmt()
232 CodeGenFunction::LexicalScope Cleanups(CGF, Handler.Body->getSourceRange()); in EmitTryCatchStmt()
233 SaveAndRestore RevertAfterScope(CGF.CurrentFuncletPad); in EmitTryCatchStmt()
237 CGF.CurrentFuncletPad = CPI; in EmitTryCatchStmt()
238 CPI->setOperand(2, CGF.getExceptionSlot().getPointer()); in EmitTryCatchStmt()
239 CGF.EHStack.pushCleanup<CatchRetScope>(NormalCleanup, CPI); in EmitTryCatchStmt()
243 llvm::Value *RawExn = CGF.getExceptionFromSlot(); in EmitTryCatchStmt()
248 Exn = CGF.EmitNounwindRuntimeCall(beginCatchFn, RawExn, "exn.adjusted"); in EmitTryCatchStmt()
254 CGF.EHStack.pushCleanup<CallObjCEndCatch>(NormalAndEHCleanup, in EmitTryCatchStmt()
261 llvm::Type *CatchType = CGF.ConvertType(CatchParam->getType()); in EmitTryCatchStmt()
262 llvm::Value *CastExn = CGF.Builder.CreateBitCast(Exn, CatchType); in EmitTryCatchStmt()
264 CGF.EmitAutoVarDecl(*CatchParam); in EmitTryCatchStmt()
265 EmitInitOfCatchParam(CGF, CastExn, CatchParam); in EmitTryCatchStmt()
268 CGF.ObjCEHValueStack.push_back(Exn); in EmitTryCatchStmt()
269 CGF.EmitStmt(Handler.Body); in EmitTryCatchStmt()
270 CGF.ObjCEHValueStack.pop_back(); in EmitTryCatchStmt()
275 CGF.EmitBranchThroughCleanup(Cont); in EmitTryCatchStmt()
279 CGF.Builder.restoreIP(SavedIP); in EmitTryCatchStmt()
283 FinallyInfo.exit(CGF); in EmitTryCatchStmt()
286 CGF.EmitBlock(Cont.getBlock()); in EmitTryCatchStmt()
289 void CGObjCRuntime::EmitInitOfCatchParam(CodeGenFunction &CGF, in EmitInitOfCatchParam() argument
293 Address paramAddr = CGF.GetAddrOfLocalVar(paramDecl); in EmitInitOfCatchParam()
297 exn = CGF.EmitARCRetainNonBlock(exn); in EmitInitOfCatchParam()
303 CGF.Builder.CreateStore(exn, paramAddr); in EmitInitOfCatchParam()
307 CGF.EmitARCInitWeak(paramAddr, exn); in EmitInitOfCatchParam()
320 void Emit(CodeGenFunction &CGF, Flags flags) override { in Emit()
321 CGF.EmitNounwindRuntimeCall(SyncExitFn, SyncArg); in Emit()
326 void CGObjCRuntime::EmitAtSynchronizedStmt(CodeGenFunction &CGF, in EmitAtSynchronizedStmt() argument
330 CodeGenFunction::RunCleanupsScope cleanups(CGF); in EmitAtSynchronizedStmt()
336 if (CGF.getLangOpts().ObjCAutoRefCount) { in EmitAtSynchronizedStmt()
337 lock = CGF.EmitARCRetainScalarExpr(lockExpr); in EmitAtSynchronizedStmt()
338 lock = CGF.EmitObjCConsumeObject(lockExpr->getType(), lock); in EmitAtSynchronizedStmt()
340 lock = CGF.EmitScalarExpr(lockExpr); in EmitAtSynchronizedStmt()
342 lock = CGF.Builder.CreateBitCast(lock, CGF.VoidPtrTy); in EmitAtSynchronizedStmt()
345 CGF.Builder.CreateCall(syncEnterFn, lock)->setDoesNotThrow(); in EmitAtSynchronizedStmt()
348 CGF.EHStack.pushCleanup<CallSyncExit>(NormalAndEHCleanup, syncExitFn, lock); in EmitAtSynchronizedStmt()
351 CGF.EmitStmt(S.getSynchBody()); in EmitAtSynchronizedStmt()
391 bool CGObjCRuntime::canMessageReceiverBeNull(CodeGenFunction &CGF, in canMessageReceiverBeNull() argument
409 dyn_cast_or_null<ObjCMethodDecl>(CGF.CurCodeDecl)) { in canMessageReceiverBeNull()
413 llvm::Value *selfAddr = CGF.GetAddrOfLocalVar(self).getPointer(); in canMessageReceiverBeNull()
434 void CGObjCRuntime::destroyCalleeDestroyedArguments(CodeGenFunction &CGF, in destroyCalleeDestroyedArguments() argument
442 RValue RV = I->getRValue(CGF); in destroyCalleeDestroyedArguments()
445 CGF.EmitARCRelease(RV.getScalarVal(), ARCImpreciseLifetime); in destroyCalleeDestroyedArguments()
450 RValue RV = I->getRValue(CGF); in destroyCalleeDestroyedArguments()
454 CGF.destroyCXXObject(CGF, RV.getAggregateAddress(), QT); in destroyCalleeDestroyedArguments()
457 CGF.destroyNonTrivialCStruct(CGF, RV.getAggregateAddress(), QT); in destroyCalleeDestroyedArguments()