• Home
  • Raw
  • Download

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().arrangeFreeFunctionCall(Context.VoidTy, args, in emitStructGetterCall()
836 static void emitCPPObjectAtomicGetterCall(CodeGenFunction &CGF, in emitCPPObjectAtomicGetterCall() argument
845 args.add(RValue::get(returnAddr), CGF.getContext().VoidPtrTy); in emitCPPObjectAtomicGetterCall()
849 CGF.EmitLValueForIvar(CGF.TypeOfSelfObject(), in emitCPPObjectAtomicGetterCall()
850 CGF.LoadObjCSelf(), ivar, 0).getPointer(); in emitCPPObjectAtomicGetterCall()
851 ivarAddr = CGF.Builder.CreateBitCast(ivarAddr, CGF.Int8PtrTy); in emitCPPObjectAtomicGetterCall()
852 args.add(RValue::get(ivarAddr), CGF.getContext().VoidPtrTy); in emitCPPObjectAtomicGetterCall()
855 args.add(RValue::get(AtomicHelperFn), CGF.getContext().VoidPtrTy); in emitCPPObjectAtomicGetterCall()
858 CGF.CGM.getObjCRuntime().GetCppAtomicObjectGetFunction(); in emitCPPObjectAtomicGetterCall()
859 CGF.EmitCall(CGF.getTypes().arrangeFreeFunctionCall(CGF.getContext().VoidTy, in emitCPPObjectAtomicGetterCall()
1036 static void emitStructSetterCall(CodeGenFunction &CGF, ObjCMethodDecl *OMD, in emitStructSetterCall() argument
1043 llvm::Value *ivarAddr = CGF.EmitLValueForIvar(CGF.TypeOfSelfObject(), in emitStructSetterCall()
1044 CGF.LoadObjCSelf(), ivar, 0) in emitStructSetterCall()
1046 ivarAddr = CGF.Builder.CreateBitCast(ivarAddr, CGF.Int8PtrTy); in emitStructSetterCall()
1047 args.add(RValue::get(ivarAddr), CGF.getContext().VoidPtrTy); in emitStructSetterCall()
1053 llvm::Value *argAddr = CGF.EmitLValue(&argRef).getPointer(); in emitStructSetterCall()
1054 argAddr = CGF.Builder.CreateBitCast(argAddr, CGF.Int8PtrTy); in emitStructSetterCall()
1055 args.add(RValue::get(argAddr), CGF.getContext().VoidPtrTy); in emitStructSetterCall()
1059 CGF.CGM.getSize(CGF.getContext().getTypeSizeInChars(ivar->getType())); in emitStructSetterCall()
1060 args.add(RValue::get(size), CGF.getContext().getSizeType()); in emitStructSetterCall()
1063 args.add(RValue::get(CGF.Builder.getTrue()), CGF.getContext().BoolTy); in emitStructSetterCall()
1067 args.add(RValue::get(CGF.Builder.getFalse()), CGF.getContext().BoolTy); in emitStructSetterCall()
1069 llvm::Value *copyStructFn = CGF.CGM.getObjCRuntime().GetSetStructFunction(); in emitStructSetterCall()
1070 CGF.EmitCall(CGF.getTypes().arrangeFreeFunctionCall(CGF.getContext().VoidTy, 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(CGF.getTypes().arrangeFreeFunctionCall(CGF.getContext().VoidTy, in emitCPPObjectAtomicSetterCall()
1355 void Emit(CodeGenFunction &CGF, Flags flags) override { in Emit()
1357 = CGF.EmitLValueForIvar(CGF.TypeOfSelfObject(), addr, ivar, /*CVR*/ 0); in Emit()
1358 CGF.emitDestroy(lvalue.getAddress(), ivar->getType(), destroyer, in Emit()
1365 static void destroyARCStrongWithStore(CodeGenFunction &CGF, in destroyARCStrongWithStore() argument
1369 CGF.EmitARCStoreStrongCall(addr, null, /*ignored*/ true); in destroyARCStrongWithStore()
1372 static void emitCXXDestructMethod(CodeGenFunction &CGF, in emitCXXDestructMethod() argument
1374 CodeGenFunction::RunCleanupsScope scope(CGF); in emitCXXDestructMethod()
1376 llvm::Value *self = CGF.LoadObjCSelf(); in emitCXXDestructMethod()
1396 destroyer = CGF.getDestroyer(dtorKind); in emitCXXDestructMethod()
1399 CleanupKind cleanupKind = CGF.getCleanupKind(dtorKind); in emitCXXDestructMethod()
1401 CGF.EHStack.pushCleanup<DestroyIvar>(cleanupKind, self, ivar, destroyer, in emitCXXDestructMethod()
1767 void Emit(CodeGenFunction &CGF, Flags flags) override { in Emit()
1769 CGF.EmitARCRelease(object, ARCImpreciseLifetime); in Emit()
1829 static llvm::Value *emitARCValueOperation(CodeGenFunction &CGF, in emitARCValueOperation() argument
1838 llvm::FunctionType::get(CGF.Int8PtrTy, CGF.Int8PtrTy, false); in emitARCValueOperation()
1839 fn = createARCRuntimeFunction(CGF.CGM, fnType, fnName); in emitARCValueOperation()
1844 value = CGF.Builder.CreateBitCast(value, CGF.Int8PtrTy); in emitARCValueOperation()
1847 llvm::CallInst *call = CGF.EmitNounwindRuntimeCall(fn, value); in emitARCValueOperation()
1852 return CGF.Builder.CreateBitCast(call, origType); in emitARCValueOperation()
1857 static llvm::Value *emitARCLoadOperation(CodeGenFunction &CGF, in emitARCLoadOperation() argument
1863 llvm::FunctionType::get(CGF.Int8PtrTy, CGF.Int8PtrPtrTy, false); in emitARCLoadOperation()
1864 fn = createARCRuntimeFunction(CGF.CGM, fnType, fnName); in emitARCLoadOperation()
1869 addr = CGF.Builder.CreateBitCast(addr, CGF.Int8PtrPtrTy); in emitARCLoadOperation()
1872 llvm::Value *result = CGF.EmitNounwindRuntimeCall(fn, addr.getPointer()); in emitARCLoadOperation()
1875 if (origType != CGF.Int8PtrTy) in emitARCLoadOperation()
1876 result = CGF.Builder.CreateBitCast(result, origType); in emitARCLoadOperation()
1883 static llvm::Value *emitARCStoreOperation(CodeGenFunction &CGF, in emitARCStoreOperation() argument
1892 llvm::Type *argTypes[] = { CGF.Int8PtrPtrTy, CGF.Int8PtrTy }; in emitARCStoreOperation()
1895 = llvm::FunctionType::get(CGF.Int8PtrTy, argTypes, false); in emitARCStoreOperation()
1896 fn = createARCRuntimeFunction(CGF.CGM, fnType, fnName); in emitARCStoreOperation()
1902 CGF.Builder.CreateBitCast(addr.getPointer(), CGF.Int8PtrPtrTy), in emitARCStoreOperation()
1903 CGF.Builder.CreateBitCast(value, CGF.Int8PtrTy) in emitARCStoreOperation()
1905 llvm::CallInst *result = CGF.EmitNounwindRuntimeCall(fn, args); in emitARCStoreOperation()
1909 return CGF.Builder.CreateBitCast(result, origType); in emitARCStoreOperation()
1914 static void emitARCCopyOperation(CodeGenFunction &CGF, in emitARCCopyOperation() argument
1922 llvm::Type *argTypes[] = { CGF.Int8PtrPtrTy, CGF.Int8PtrPtrTy }; in emitARCCopyOperation()
1925 = llvm::FunctionType::get(CGF.Builder.getVoidTy(), argTypes, false); in emitARCCopyOperation()
1926 fn = createARCRuntimeFunction(CGF.CGM, fnType, fnName); in emitARCCopyOperation()
1930 CGF.Builder.CreateBitCast(dst.getPointer(), CGF.Int8PtrPtrTy), in emitARCCopyOperation()
1931 CGF.Builder.CreateBitCast(src.getPointer(), CGF.Int8PtrPtrTy) in emitARCCopyOperation()
1933 CGF.EmitNounwindRuntimeCall(fn, args); in emitARCCopyOperation()
2346 void CodeGenFunction::destroyARCStrongPrecise(CodeGenFunction &CGF, in destroyARCStrongPrecise() argument
2349 CGF.EmitARCDestroyStrong(addr, ARCPreciseLifetime); in destroyARCStrongPrecise()
2352 void CodeGenFunction::destroyARCStrongImprecise(CodeGenFunction &CGF, in destroyARCStrongImprecise() argument
2355 CGF.EmitARCDestroyStrong(addr, ARCImpreciseLifetime); in destroyARCStrongImprecise()
2358 void CodeGenFunction::destroyARCWeak(CodeGenFunction &CGF, in destroyARCWeak() argument
2361 CGF.EmitARCDestroyWeak(addr); in destroyARCWeak()
2370 void Emit(CodeGenFunction &CGF, Flags flags) override { in Emit()
2371 CGF.EmitObjCAutoreleasePoolPop(Token); in Emit()
2379 void Emit(CodeGenFunction &CGF, Flags flags) override { in Emit()
2380 CGF.EmitObjCMRRAutoreleasePoolPop(Token); in Emit()
2392 static TryEmitResult tryEmitARCRetainLoadOfScalar(CodeGenFunction &CGF, in tryEmitARCRetainLoadOfScalar() argument
2400 return TryEmitResult(CGF.EmitLoadOfLValue(lvalue, in tryEmitARCRetainLoadOfScalar()
2405 return TryEmitResult(CGF.EmitARCLoadWeakRetained(lvalue.getAddress()), in tryEmitARCRetainLoadOfScalar()
2412 static TryEmitResult tryEmitARCRetainLoadOfScalar(CodeGenFunction &CGF, in tryEmitARCRetainLoadOfScalar() argument
2424 LValue lv = CGF.EmitLValue(e); in tryEmitARCRetainLoadOfScalar()
2427 llvm::Value *result = CGF.EmitLoadOfLValue(lv, in tryEmitARCRetainLoadOfScalar()
2431 CGF.EmitStoreOfScalar(getNullForVariable(lv.getAddress()), lv); in tryEmitARCRetainLoadOfScalar()
2439 if (CGF.getLangOpts().CPlusPlus && in tryEmitARCRetainLoadOfScalar()
2444 return TryEmitResult(CGF.EmitScalarExpr(e), false); in tryEmitARCRetainLoadOfScalar()
2446 return tryEmitARCRetainLoadOfScalar(CGF, CGF.EmitLValue(e), type); in tryEmitARCRetainLoadOfScalar()
2449 static llvm::Value *emitARCRetainAfterCall(CodeGenFunction &CGF,
2454 static llvm::Value *emitARCRetainCall(CodeGenFunction &CGF, const Expr *e) { in emitARCRetainCall() argument
2455 llvm::Value *value = CGF.EmitScalarExpr(e); in emitARCRetainCall()
2456 return emitARCRetainAfterCall(CGF, value); in emitARCRetainCall()
2459 static llvm::Value *emitARCRetainAfterCall(CodeGenFunction &CGF, in emitARCRetainAfterCall() argument
2462 CGBuilderTy::InsertPoint ip = CGF.Builder.saveIP(); in emitARCRetainAfterCall()
2465 CGF.Builder.SetInsertPoint(call->getParent(), in emitARCRetainAfterCall()
2467 value = CGF.EmitARCRetainAutoreleasedReturnValue(value); in emitARCRetainAfterCall()
2469 CGF.Builder.restoreIP(ip); in emitARCRetainAfterCall()
2472 CGBuilderTy::InsertPoint ip = CGF.Builder.saveIP(); in emitARCRetainAfterCall()
2476 CGF.Builder.SetInsertPoint(BB, BB->begin()); in emitARCRetainAfterCall()
2477 value = CGF.EmitARCRetainAutoreleasedReturnValue(value); in emitARCRetainAfterCall()
2479 CGF.Builder.restoreIP(ip); in emitARCRetainAfterCall()
2486 operand = emitARCRetainAfterCall(CGF, operand); in emitARCRetainAfterCall()
2494 return CGF.EmitARCRetainNonBlock(value); in emitARCRetainAfterCall()
2537 static TryEmitResult tryEmitARCRetainPseudoObject(CodeGenFunction &CGF, in tryEmitARCRetainPseudoObject() argument
2560 result = tryEmitARCRetainScalarExpr(CGF, ov->getSourceExpr()); in tryEmitARCRetainPseudoObject()
2561 opaqueData = OVMA::bind(CGF, ov, RValue::get(result.getPointer())); in tryEmitARCRetainPseudoObject()
2565 opaqueData = OVMA::bind(CGF, ov, ov->getSourceExpr()); in tryEmitARCRetainPseudoObject()
2572 result = tryEmitARCRetainScalarExpr(CGF, semantic); in tryEmitARCRetainPseudoObject()
2576 CGF.EmitIgnoredExpr(semantic); in tryEmitARCRetainPseudoObject()
2582 opaques[i].unbind(CGF); in tryEmitARCRetainPseudoObject()
2588 tryEmitARCRetainScalarExpr(CodeGenFunction &CGF, const Expr *e) { in tryEmitARCRetainScalarExpr() argument
2612 = tryEmitARCRetainLoadOfScalar(CGF, ce->getSubExpr()); in tryEmitARCRetainScalarExpr()
2615 value = CGF.Builder.CreateBitCast(value, resultType); in tryEmitARCRetainScalarExpr()
2629 resultType = CGF.ConvertType(ce->getType()); in tryEmitARCRetainScalarExpr()
2637 llvm::Value *result = CGF.EmitScalarExpr(ce->getSubExpr()); in tryEmitARCRetainScalarExpr()
2638 if (resultType) result = CGF.Builder.CreateBitCast(result, resultType); in tryEmitARCRetainScalarExpr()
2651 result = CGF.EmitScalarExpr(ce->getSubExpr()); in tryEmitARCRetainScalarExpr()
2656 = tryEmitARCRetainScalarExpr(CGF, ce->getSubExpr()); in tryEmitARCRetainScalarExpr()
2663 result = CGF.Builder.CreateBitCast(result, resultType); in tryEmitARCRetainScalarExpr()
2671 result = CGF.EmitARCRetainBlock(result, /*mandatory*/ true); in tryEmitARCRetainScalarExpr()
2672 if (resultType) result = CGF.Builder.CreateBitCast(result, resultType); in tryEmitARCRetainScalarExpr()
2679 llvm::Value *result = emitARCRetainCall(CGF, ce->getSubExpr()); in tryEmitARCRetainScalarExpr()
2680 if (resultType) result = CGF.Builder.CreateBitCast(result, resultType); in tryEmitARCRetainScalarExpr()
2702 llvm::Value *result = emitARCRetainCall(CGF, e); in tryEmitARCRetainScalarExpr()
2703 if (resultType) result = CGF.Builder.CreateBitCast(result, resultType); in tryEmitARCRetainScalarExpr()
2709 = tryEmitARCRetainPseudoObject(CGF, pseudo); in tryEmitARCRetainScalarExpr()
2712 value = CGF.Builder.CreateBitCast(value, resultType); in tryEmitARCRetainScalarExpr()
2724 llvm::Value *result = CGF.EmitScalarExpr(e); in tryEmitARCRetainScalarExpr()
2725 if (resultType) result = CGF.Builder.CreateBitCast(result, resultType); in tryEmitARCRetainScalarExpr()
2729 static llvm::Value *emitARCRetainLoadOfScalar(CodeGenFunction &CGF, in emitARCRetainLoadOfScalar() argument
2732 TryEmitResult result = tryEmitARCRetainLoadOfScalar(CGF, lvalue, type); in emitARCRetainLoadOfScalar()
2735 value = CGF.EmitARCRetain(type, value); in emitARCRetainLoadOfScalar()