Lines Matching refs:CGF
33 tryEmitARCRetainScalarExpr(CodeGenFunction &CGF, const Expr *e);
34 static RValue AdjustObjCObjectType(CodeGenFunction &CGF,
251 static RValue AdjustObjCObjectType(CodeGenFunction &CGF, QualType ExpT, in AdjustObjCObjectType() argument
257 llvm::Type *ExpLLVMTy = CGF.ConvertType(ExpT); in AdjustObjCObjectType()
262 return RValue::get(CGF.Builder.CreateBitCast(Result.getScalarVal(), in AdjustObjCObjectType()
489 void Emit(CodeGenFunction &CGF, Flags flags) override { in Emit()
490 const ObjCMethodDecl *method = cast<ObjCMethodDecl>(CGF.CurCodeDecl); in Emit()
499 llvm::Value *self = CGF.LoadObjCSelf(); in Emit()
502 CGF.CGM.getObjCRuntime().GenerateMessageSendSuper(CGF, ReturnValueSlot(), in Emit()
503 CGF.getContext().VoidTy, in Emit()
553 static llvm::Value *emitARCRetainLoadOfScalar(CodeGenFunction &CGF,
569 static void emitStructGetterCall(CodeGenFunction &CGF, ObjCIvarDecl *ivar, in emitStructGetterCall() argument
571 ASTContext &Context = CGF.getContext(); in emitStructGetterCall()
574 CGF.EmitLValueForIvar(CGF.TypeOfSelfObject(), CGF.LoadObjCSelf(), ivar, 0) in emitStructGetterCall()
581 Address dest = CGF.Builder.CreateBitCast(CGF.ReturnValue, CGF.VoidPtrTy); in emitStructGetterCall()
584 src = CGF.Builder.CreateBitCast(src, CGF.VoidPtrTy); in emitStructGetterCall()
587 CharUnits size = CGF.getContext().getTypeSizeInChars(ivar->getType()); in emitStructGetterCall()
588 args.add(RValue::get(CGF.CGM.getSize(size)), Context.getSizeType()); in emitStructGetterCall()
589 args.add(RValue::get(CGF.Builder.getInt1(isAtomic)), Context.BoolTy); in emitStructGetterCall()
590 args.add(RValue::get(CGF.Builder.getInt1(hasStrong)), Context.BoolTy); in emitStructGetterCall()
592 llvm::Value *fn = CGF.CGM.getObjCRuntime().GetGetStructFunction(); in emitStructGetterCall()
593 CGF.EmitCall(CGF.getTypes().arrangeBuiltinFunctionCall(Context.VoidTy, args), in emitStructGetterCall()
834 static void emitCPPObjectAtomicGetterCall(CodeGenFunction &CGF, in emitCPPObjectAtomicGetterCall() argument
843 args.add(RValue::get(returnAddr), CGF.getContext().VoidPtrTy); in emitCPPObjectAtomicGetterCall()
847 CGF.EmitLValueForIvar(CGF.TypeOfSelfObject(), in emitCPPObjectAtomicGetterCall()
848 CGF.LoadObjCSelf(), ivar, 0).getPointer(); in emitCPPObjectAtomicGetterCall()
849 ivarAddr = CGF.Builder.CreateBitCast(ivarAddr, CGF.Int8PtrTy); in emitCPPObjectAtomicGetterCall()
850 args.add(RValue::get(ivarAddr), CGF.getContext().VoidPtrTy); in emitCPPObjectAtomicGetterCall()
853 args.add(RValue::get(AtomicHelperFn), CGF.getContext().VoidPtrTy); in emitCPPObjectAtomicGetterCall()
856 CGF.CGM.getObjCRuntime().GetCppAtomicObjectGetFunction(); in emitCPPObjectAtomicGetterCall()
857 CGF.EmitCall( in emitCPPObjectAtomicGetterCall()
858 CGF.getTypes().arrangeBuiltinFunctionCall(CGF.getContext().VoidTy, args), in emitCPPObjectAtomicGetterCall()
1038 static void emitStructSetterCall(CodeGenFunction &CGF, ObjCMethodDecl *OMD, in emitStructSetterCall() argument
1045 llvm::Value *ivarAddr = CGF.EmitLValueForIvar(CGF.TypeOfSelfObject(), in emitStructSetterCall()
1046 CGF.LoadObjCSelf(), ivar, 0) in emitStructSetterCall()
1048 ivarAddr = CGF.Builder.CreateBitCast(ivarAddr, CGF.Int8PtrTy); in emitStructSetterCall()
1049 args.add(RValue::get(ivarAddr), CGF.getContext().VoidPtrTy); in emitStructSetterCall()
1055 llvm::Value *argAddr = CGF.EmitLValue(&argRef).getPointer(); in emitStructSetterCall()
1056 argAddr = CGF.Builder.CreateBitCast(argAddr, CGF.Int8PtrTy); in emitStructSetterCall()
1057 args.add(RValue::get(argAddr), CGF.getContext().VoidPtrTy); in emitStructSetterCall()
1061 CGF.CGM.getSize(CGF.getContext().getTypeSizeInChars(ivar->getType())); in emitStructSetterCall()
1062 args.add(RValue::get(size), CGF.getContext().getSizeType()); in emitStructSetterCall()
1065 args.add(RValue::get(CGF.Builder.getTrue()), CGF.getContext().BoolTy); in emitStructSetterCall()
1069 args.add(RValue::get(CGF.Builder.getFalse()), CGF.getContext().BoolTy); in emitStructSetterCall()
1071 llvm::Value *copyStructFn = CGF.CGM.getObjCRuntime().GetSetStructFunction(); in emitStructSetterCall()
1072 CGF.EmitCall( in emitStructSetterCall()
1073 CGF.getTypes().arrangeBuiltinFunctionCall(CGF.getContext().VoidTy, args), in emitStructSetterCall()
1080 static void emitCPPObjectAtomicSetterCall(CodeGenFunction &CGF, in emitCPPObjectAtomicSetterCall() argument
1090 CGF.EmitLValueForIvar(CGF.TypeOfSelfObject(), in emitCPPObjectAtomicSetterCall()
1091 CGF.LoadObjCSelf(), ivar, 0).getPointer(); in emitCPPObjectAtomicSetterCall()
1092 ivarAddr = CGF.Builder.CreateBitCast(ivarAddr, CGF.Int8PtrTy); in emitCPPObjectAtomicSetterCall()
1093 args.add(RValue::get(ivarAddr), CGF.getContext().VoidPtrTy); in emitCPPObjectAtomicSetterCall()
1099 llvm::Value *argAddr = CGF.EmitLValue(&argRef).getPointer(); in emitCPPObjectAtomicSetterCall()
1100 argAddr = CGF.Builder.CreateBitCast(argAddr, CGF.Int8PtrTy); in emitCPPObjectAtomicSetterCall()
1101 args.add(RValue::get(argAddr), CGF.getContext().VoidPtrTy); in emitCPPObjectAtomicSetterCall()
1104 args.add(RValue::get(AtomicHelperFn), CGF.getContext().VoidPtrTy); in emitCPPObjectAtomicSetterCall()
1107 CGF.CGM.getObjCRuntime().GetCppAtomicObjectSetFunction(); in emitCPPObjectAtomicSetterCall()
1108 CGF.EmitCall( in emitCPPObjectAtomicSetterCall()
1109 CGF.getTypes().arrangeBuiltinFunctionCall(CGF.getContext().VoidTy, args), in emitCPPObjectAtomicSetterCall()
1349 void Emit(CodeGenFunction &CGF, Flags flags) override { in Emit()
1351 = CGF.EmitLValueForIvar(CGF.TypeOfSelfObject(), addr, ivar, /*CVR*/ 0); in Emit()
1352 CGF.emitDestroy(lvalue.getAddress(), ivar->getType(), destroyer, in Emit()
1359 static void destroyARCStrongWithStore(CodeGenFunction &CGF, in destroyARCStrongWithStore() argument
1363 CGF.EmitARCStoreStrongCall(addr, null, /*ignored*/ true); in destroyARCStrongWithStore()
1366 static void emitCXXDestructMethod(CodeGenFunction &CGF, in emitCXXDestructMethod() argument
1368 CodeGenFunction::RunCleanupsScope scope(CGF); in emitCXXDestructMethod()
1370 llvm::Value *self = CGF.LoadObjCSelf(); in emitCXXDestructMethod()
1390 destroyer = CGF.getDestroyer(dtorKind); in emitCXXDestructMethod()
1393 CleanupKind cleanupKind = CGF.getCleanupKind(dtorKind); in emitCXXDestructMethod()
1395 CGF.EHStack.pushCleanup<DestroyIvar>(cleanupKind, self, ivar, destroyer, in emitCXXDestructMethod()
1759 void Emit(CodeGenFunction &CGF, Flags flags) override { in Emit()
1761 CGF.EmitARCRelease(object, ARCImpreciseLifetime); in Emit()
1821 static llvm::Value *emitARCValueOperation(CodeGenFunction &CGF, in emitARCValueOperation() argument
1830 llvm::FunctionType::get(CGF.Int8PtrTy, CGF.Int8PtrTy, false); in emitARCValueOperation()
1831 fn = createARCRuntimeFunction(CGF.CGM, fnType, fnName); in emitARCValueOperation()
1836 value = CGF.Builder.CreateBitCast(value, CGF.Int8PtrTy); in emitARCValueOperation()
1839 llvm::CallInst *call = CGF.EmitNounwindRuntimeCall(fn, value); in emitARCValueOperation()
1844 return CGF.Builder.CreateBitCast(call, origType); in emitARCValueOperation()
1849 static llvm::Value *emitARCLoadOperation(CodeGenFunction &CGF, in emitARCLoadOperation() argument
1855 llvm::FunctionType::get(CGF.Int8PtrTy, CGF.Int8PtrPtrTy, false); in emitARCLoadOperation()
1856 fn = createARCRuntimeFunction(CGF.CGM, fnType, fnName); in emitARCLoadOperation()
1861 addr = CGF.Builder.CreateBitCast(addr, CGF.Int8PtrPtrTy); in emitARCLoadOperation()
1864 llvm::Value *result = CGF.EmitNounwindRuntimeCall(fn, addr.getPointer()); in emitARCLoadOperation()
1867 if (origType != CGF.Int8PtrTy) in emitARCLoadOperation()
1868 result = CGF.Builder.CreateBitCast(result, origType); in emitARCLoadOperation()
1875 static llvm::Value *emitARCStoreOperation(CodeGenFunction &CGF, in emitARCStoreOperation() argument
1884 llvm::Type *argTypes[] = { CGF.Int8PtrPtrTy, CGF.Int8PtrTy }; in emitARCStoreOperation()
1887 = llvm::FunctionType::get(CGF.Int8PtrTy, argTypes, false); in emitARCStoreOperation()
1888 fn = createARCRuntimeFunction(CGF.CGM, fnType, fnName); in emitARCStoreOperation()
1894 CGF.Builder.CreateBitCast(addr.getPointer(), CGF.Int8PtrPtrTy), in emitARCStoreOperation()
1895 CGF.Builder.CreateBitCast(value, CGF.Int8PtrTy) in emitARCStoreOperation()
1897 llvm::CallInst *result = CGF.EmitNounwindRuntimeCall(fn, args); in emitARCStoreOperation()
1901 return CGF.Builder.CreateBitCast(result, origType); in emitARCStoreOperation()
1906 static void emitARCCopyOperation(CodeGenFunction &CGF, in emitARCCopyOperation() argument
1914 llvm::Type *argTypes[] = { CGF.Int8PtrPtrTy, CGF.Int8PtrPtrTy }; in emitARCCopyOperation()
1917 = llvm::FunctionType::get(CGF.Builder.getVoidTy(), argTypes, false); in emitARCCopyOperation()
1918 fn = createARCRuntimeFunction(CGF.CGM, fnType, fnName); in emitARCCopyOperation()
1922 CGF.Builder.CreateBitCast(dst.getPointer(), CGF.Int8PtrPtrTy), in emitARCCopyOperation()
1923 CGF.Builder.CreateBitCast(src.getPointer(), CGF.Int8PtrPtrTy) in emitARCCopyOperation()
1925 CGF.EmitNounwindRuntimeCall(fn, args); in emitARCCopyOperation()
1975 static void emitAutoreleasedReturnValueMarker(CodeGenFunction &CGF) { in emitAutoreleasedReturnValueMarker() argument
1979 = CGF.CGM.getObjCEntrypoints().retainAutoreleasedReturnValueMarker; in emitAutoreleasedReturnValueMarker()
1982 = CGF.CGM.getTargetCodeGenInfo() in emitAutoreleasedReturnValueMarker()
1990 } else if (CGF.CGM.getCodeGenOpts().OptimizationLevel == 0) { in emitAutoreleasedReturnValueMarker()
1992 llvm::FunctionType::get(CGF.VoidTy, /*variadic*/false); in emitAutoreleasedReturnValueMarker()
2001 CGF.CGM.getModule().getOrInsertNamedMetadata( in emitAutoreleasedReturnValueMarker()
2005 auto &ctx = CGF.getLLVMContext(); in emitAutoreleasedReturnValueMarker()
2014 CGF.Builder.CreateCall(marker); in emitAutoreleasedReturnValueMarker()
2357 void CodeGenFunction::destroyARCStrongPrecise(CodeGenFunction &CGF, in destroyARCStrongPrecise() argument
2360 CGF.EmitARCDestroyStrong(addr, ARCPreciseLifetime); in destroyARCStrongPrecise()
2363 void CodeGenFunction::destroyARCStrongImprecise(CodeGenFunction &CGF, in destroyARCStrongImprecise() argument
2366 CGF.EmitARCDestroyStrong(addr, ARCImpreciseLifetime); in destroyARCStrongImprecise()
2369 void CodeGenFunction::destroyARCWeak(CodeGenFunction &CGF, in destroyARCWeak() argument
2372 CGF.EmitARCDestroyWeak(addr); in destroyARCWeak()
2381 void Emit(CodeGenFunction &CGF, Flags flags) override { in Emit()
2382 CGF.EmitObjCAutoreleasePoolPop(Token); in Emit()
2390 void Emit(CodeGenFunction &CGF, Flags flags) override { in Emit()
2391 CGF.EmitObjCMRRAutoreleasePoolPop(Token); in Emit()
2403 static TryEmitResult tryEmitARCRetainLoadOfScalar(CodeGenFunction &CGF, in tryEmitARCRetainLoadOfScalar() argument
2411 return TryEmitResult(CGF.EmitLoadOfLValue(lvalue, in tryEmitARCRetainLoadOfScalar()
2416 return TryEmitResult(CGF.EmitARCLoadWeakRetained(lvalue.getAddress()), in tryEmitARCRetainLoadOfScalar()
2423 static TryEmitResult tryEmitARCRetainLoadOfScalar(CodeGenFunction &CGF, in tryEmitARCRetainLoadOfScalar() argument
2435 LValue lv = CGF.EmitLValue(e); in tryEmitARCRetainLoadOfScalar()
2438 llvm::Value *result = CGF.EmitLoadOfLValue(lv, in tryEmitARCRetainLoadOfScalar()
2442 CGF.EmitStoreOfScalar(getNullForVariable(lv.getAddress()), lv); in tryEmitARCRetainLoadOfScalar()
2450 if (CGF.getLangOpts().CPlusPlus && in tryEmitARCRetainLoadOfScalar()
2455 return TryEmitResult(CGF.EmitScalarExpr(e), false); in tryEmitARCRetainLoadOfScalar()
2457 return tryEmitARCRetainLoadOfScalar(CGF, CGF.EmitLValue(e), type); in tryEmitARCRetainLoadOfScalar()
2460 typedef llvm::function_ref<llvm::Value *(CodeGenFunction &CGF,
2465 static llvm::Value *emitARCOperationAfterCall(CodeGenFunction &CGF, in emitARCOperationAfterCall() argument
2470 CGBuilderTy::InsertPoint ip = CGF.Builder.saveIP(); in emitARCOperationAfterCall()
2473 CGF.Builder.SetInsertPoint(call->getParent(), in emitARCOperationAfterCall()
2475 value = doAfterCall(CGF, value); in emitARCOperationAfterCall()
2477 CGF.Builder.restoreIP(ip); in emitARCOperationAfterCall()
2480 CGBuilderTy::InsertPoint ip = CGF.Builder.saveIP(); in emitARCOperationAfterCall()
2484 CGF.Builder.SetInsertPoint(BB, BB->begin()); in emitARCOperationAfterCall()
2485 value = doAfterCall(CGF, value); in emitARCOperationAfterCall()
2487 CGF.Builder.restoreIP(ip); in emitARCOperationAfterCall()
2494 operand = emitARCOperationAfterCall(CGF, operand, doAfterCall, doFallback); in emitARCOperationAfterCall()
2502 return doFallback(CGF, value); in emitARCOperationAfterCall()
2508 static llvm::Value *emitARCRetainCallResult(CodeGenFunction &CGF, in emitARCRetainCallResult() argument
2510 llvm::Value *value = CGF.EmitScalarExpr(e); in emitARCRetainCallResult()
2511 return emitARCOperationAfterCall(CGF, value, in emitARCRetainCallResult()
2512 [](CodeGenFunction &CGF, llvm::Value *value) { in emitARCRetainCallResult() argument
2513 return CGF.EmitARCRetainAutoreleasedReturnValue(value); in emitARCRetainCallResult()
2515 [](CodeGenFunction &CGF, llvm::Value *value) { in emitARCRetainCallResult() argument
2516 return CGF.EmitARCRetainNonBlock(value); in emitARCRetainCallResult()
2522 static llvm::Value *emitARCUnsafeClaimCallResult(CodeGenFunction &CGF, in emitARCUnsafeClaimCallResult() argument
2524 llvm::Value *value = CGF.EmitScalarExpr(e); in emitARCUnsafeClaimCallResult()
2525 return emitARCOperationAfterCall(CGF, value, in emitARCUnsafeClaimCallResult()
2526 [](CodeGenFunction &CGF, llvm::Value *value) { in emitARCUnsafeClaimCallResult() argument
2527 return CGF.EmitARCUnsafeClaimAutoreleasedReturnValue(value); in emitARCUnsafeClaimCallResult()
2529 [](CodeGenFunction &CGF, llvm::Value *value) { in emitARCUnsafeClaimCallResult() argument
2586 CodeGenFunction &CGF; member in __anond637f2450a11::ARCExprEmitter
2589 ARCExprEmitter(CodeGenFunction &CGF) : CGF(CGF) {} in ARCExprEmitter() argument
2643 opaqueData = OVMA::bind(CGF, ov, in visitPseudoObjectExpr()
2648 opaqueData = OVMA::bind(CGF, ov, ov->getSourceExpr()); in visitPseudoObjectExpr()
2659 CGF.EmitIgnoredExpr(semantic); in visitPseudoObjectExpr()
2665 opaques[i].unbind(CGF); in visitPseudoObjectExpr()
2683 llvm::Type *resultType = CGF.ConvertType(e->getType()); in visitCastExpr()
2710 CGF.EmitIgnoredExpr(e->getLHS()); in visitBinaryOperator()
2711 CGF.EnsureInsertPoint(); in visitBinaryOperator()
2754 CGF.EmitCheckedLValue(e->getLHS(), CodeGenFunction::TCK_Store); in visitBinAssignUnsafeUnretained()
2755 CGF.EmitStoreThroughLValue(RValue::get(asImpl().getValueOfResult(result)), in visitBinAssignUnsafeUnretained()
2824 ARCRetainExprEmitter(CodeGenFunction &CGF) : ARCExprEmitter(CGF) {} in ARCRetainExprEmitter()
2832 value = CGF.Builder.CreateBitCast(value, resultType); in emitBitCast()
2838 return tryEmitARCRetainLoadOfScalar(CGF, e); in visitLValueToRValue()
2844 llvm::Value *result = CGF.EmitScalarExpr(e); in visitConsumeObject()
2857 result = CGF.EmitScalarExpr(e); in visitExtendBlockObject()
2873 result = CGF.EmitARCRetainBlock(result, /*mandatory*/ true); in visitExtendBlockObject()
2880 llvm::Value *result = emitARCRetainCallResult(CGF, e); in visitReclaimReturnedObject()
2886 llvm::Value *result = emitARCRetainCallResult(CGF, e); in visitCall()
2895 llvm::Value *result = CGF.EmitScalarExpr(e); in visitExpr()
2902 tryEmitARCRetainScalarExpr(CodeGenFunction &CGF, const Expr *e) { in tryEmitARCRetainScalarExpr() argument
2903 return ARCRetainExprEmitter(CGF).visit(e); in tryEmitARCRetainScalarExpr()
2906 static llvm::Value *emitARCRetainLoadOfScalar(CodeGenFunction &CGF, in emitARCRetainLoadOfScalar() argument
2909 TryEmitResult result = tryEmitARCRetainLoadOfScalar(CGF, lvalue, type); in emitARCRetainLoadOfScalar()
2912 value = CGF.EmitARCRetain(type, value); in emitARCRetainLoadOfScalar()
2993 ARCUnsafeUnretainedExprEmitter(CodeGenFunction &CGF) : ARCExprEmitter(CGF) {} in ARCUnsafeUnretainedExprEmitter()
3000 return CGF.Builder.CreateBitCast(value, resultType); in emitBitCast()
3004 return CGF.EmitScalarExpr(e); in visitLValueToRValue()
3010 llvm::Value *value = CGF.EmitScalarExpr(e); in visitConsumeObject()
3011 return CGF.EmitObjCConsumeObject(e->getType(), value); in visitConsumeObject()
3017 return CGF.EmitARCExtendBlockObject(e); in visitExtendBlockObject()
3022 return CGF.EmitARCReclaimReturnedObject(e, /*unsafe*/ true); in visitReclaimReturnedObject()
3028 return CGF.EmitScalarExpr(e); in visitCall()
3033 return CGF.EmitScalarExpr(e); in visitExpr()
3038 static llvm::Value *emitARCUnsafeUnretainedScalarExpr(CodeGenFunction &CGF, in emitARCUnsafeUnretainedScalarExpr() argument
3040 return ARCUnsafeUnretainedExprEmitter(CGF).visit(e); in emitARCUnsafeUnretainedScalarExpr()