|
clang
3.8.0
|
#include "CGDebugInfo.h"#include "CGObjCRuntime.h"#include "CodeGenFunction.h"#include "CodeGenModule.h"#include "TargetInfo.h"#include "clang/AST/ASTContext.h"#include "clang/AST/DeclObjC.h"#include "clang/AST/StmtObjC.h"#include "clang/Basic/Diagnostic.h"#include "clang/CodeGen/CGFunctionInfo.h"#include "llvm/ADT/STLExtras.h"#include "llvm/IR/CallSite.h"#include "llvm/IR/DataLayout.h"#include "llvm/IR/InlineAsm.h"Go to the source code of this file.
Typedefs | |
| typedef llvm::PointerIntPair < llvm::Value *, 1, bool > | TryEmitResult |
Functions | |
| static TryEmitResult | tryEmitARCRetainScalarExpr (CodeGenFunction &CGF, const Expr *e) |
| static RValue | AdjustObjCObjectType (CodeGenFunction &CGF, QualType ExpT, RValue Result) |
| Adjust the type of an Objective-C object that doesn't match up due to type erasure at various points, e.g., related result types or the use of parameterized classes. More... | |
| static llvm::Constant * | getNullForVariable (Address addr) |
| Given the address of a variable of pointer type, find the correct null to store into it. More... | |
| static bool | shouldExtendReceiverForInnerPointerMessage (const ObjCMessageExpr *message) |
| Decide whether to extend the lifetime of the receiver of a returns-inner-pointer message. More... | |
| static const Expr * | findWeakLValue (const Expr *E) |
| Given an expression of ObjC pointer type, check whether it was immediately loaded from an ARC __weak l-value. More... | |
| static llvm::Value * | emitARCRetainLoadOfScalar (CodeGenFunction &CGF, LValue lvalue, QualType type) |
| static void | emitStructGetterCall (CodeGenFunction &CGF, ObjCIvarDecl *ivar, bool isAtomic, bool hasStrong) |
| emitStructGetterCall - Call the runtime function to load a property into the return value slot. More... | |
| static bool | hasUnalignedAtomics (llvm::Triple::ArchType arch) |
| Determine whether the given architecture supports unaligned atomic accesses. More... | |
| static CharUnits | getMaxAtomicAccessSize (CodeGenModule &CGM, llvm::Triple::ArchType arch) |
| Return the maximum size that permits atomic accesses for the given architecture. More... | |
| static bool | hasTrivialGetExpr (const ObjCPropertyImplDecl *propImpl) |
| static void | emitCPPObjectAtomicGetterCall (CodeGenFunction &CGF, llvm::Value *returnAddr, ObjCIvarDecl *ivar, llvm::Constant *AtomicHelperFn) |
| emitCPPObjectAtomicGetterCall - Call the runtime function to copy the ivar into the resturn slot. More... | |
| static void | emitStructSetterCall (CodeGenFunction &CGF, ObjCMethodDecl *OMD, ObjCIvarDecl *ivar) |
| emitStructSetterCall - Call the runtime function to store the value from the first formal parameter into the given ivar. More... | |
| static void | emitCPPObjectAtomicSetterCall (CodeGenFunction &CGF, ObjCMethodDecl *OMD, ObjCIvarDecl *ivar, llvm::Constant *AtomicHelperFn) |
| emitCPPObjectAtomicSetterCall - Call the runtime function to store the value from the first formal parameter into the given ivar, using the Cpp API for atomic Cpp objects with non-trivial copy assignment. More... | |
| static bool | hasTrivialSetExpr (const ObjCPropertyImplDecl *PID) |
| static bool | UseOptimizedSetter (CodeGenModule &CGM) |
| static void | destroyARCStrongWithStore (CodeGenFunction &CGF, Address addr, QualType type) |
| Like CodeGenFunction::destroyARCStrong, but do it with a call. More... | |
| static void | emitCXXDestructMethod (CodeGenFunction &CGF, ObjCImplementationDecl *impl) |
| static llvm::Constant * | createARCRuntimeFunction (CodeGenModule &CGM, llvm::FunctionType *type, StringRef fnName) |
| static llvm::Value * | emitARCValueOperation (CodeGenFunction &CGF, llvm::Value *value, llvm::Constant *&fn, StringRef fnName, bool isTailCall=false) |
| Perform an operation having the signature i8* (i8*) where a null input causes a no-op and returns null. More... | |
| static llvm::Value * | emitARCLoadOperation (CodeGenFunction &CGF, Address addr, llvm::Constant *&fn, StringRef fnName) |
| Perform an operation having the following signature: i8* (i8**) More... | |
| static llvm::Value * | emitARCStoreOperation (CodeGenFunction &CGF, Address addr, llvm::Value *value, llvm::Constant *&fn, StringRef fnName, bool ignored) |
| Perform an operation having the following signature: i8* (i8**, i8*) More... | |
| static void | emitARCCopyOperation (CodeGenFunction &CGF, Address dst, Address src, llvm::Constant *&fn, StringRef fnName) |
| Perform an operation having the following signature: void (i8**, i8**) More... | |
| static TryEmitResult | tryEmitARCRetainLoadOfScalar (CodeGenFunction &CGF, LValue lvalue, QualType type) |
| static TryEmitResult | tryEmitARCRetainLoadOfScalar (CodeGenFunction &CGF, const Expr *e) |
| static llvm::Value * | emitARCRetainAfterCall (CodeGenFunction &CGF, llvm::Value *value) |
| static llvm::Value * | emitARCRetainCall (CodeGenFunction &CGF, const Expr *e) |
| Given that the given expression is some sort of call (which does not return retained), emit a retain following it. More... | |
| static bool | shouldEmitSeparateBlockRetain (const Expr *e) |
| Determine whether it might be important to emit a separate objc_retain_block on the result of the given expression, or whether it's okay to just emit it in a +1 context. More... | |
| static TryEmitResult | tryEmitARCRetainPseudoObject (CodeGenFunction &CGF, const PseudoObjectExpr *E) |
| Try to emit a PseudoObjectExpr at +1. More... | |
| typedef llvm::PointerIntPair<llvm::Value*,1,bool> TryEmitResult |
Definition at line 31 of file CGObjC.cpp.
|
static |
Adjust the type of an Objective-C object that doesn't match up due to type erasure at various points, e.g., related result types or the use of parameterized classes.
Definition at line 251 of file CGObjC.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::ConvertType(), clang::CodeGen::CGBuilderTy::CreateBitCast(), clang::CodeGen::RValue::get(), clang::CodeGen::RValue::getScalarVal(), clang::Type::isObjCRetainableType(), and clang::CodeGen::Type.
Referenced by clang::CodeGen::CodeGenFunction::EmitObjCMessageExpr().
|
static |
Definition at line 1805 of file CGObjC.cpp.
References clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenModule::getLangOpts(), clang::ObjCRuntime::hasNativeARC(), and clang::LangOptions::ObjCRuntime.
Referenced by emitARCCopyOperation(), clang::CodeGen::CodeGenFunction::EmitARCDestroyWeak(), emitARCLoadOperation(), clang::CodeGen::CodeGenFunction::EmitARCRelease(), emitARCStoreOperation(), clang::CodeGen::CodeGenFunction::EmitARCStoreStrongCall(), emitARCValueOperation(), clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolPop(), and clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolPush().
|
static |
Like CodeGenFunction::destroyARCStrong, but do it with a call.
Definition at line 1365 of file CGObjC.cpp.
References clang::CodeGen::CodeGenFunction::EmitARCStoreStrongCall(), and getNullForVariable().
Referenced by emitCXXDestructMethod().
|
static |
Perform an operation having the following signature: void (i8**, i8**)
Definition at line 1914 of file CGObjC.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, createARCRuntimeFunction(), clang::CodeGen::CGBuilderTy::CreateBitCast(), clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall(), clang::CodeGen::Address::getPointer(), clang::CodeGen::Address::getType(), clang::CodeGen::CodeGenTypeCache::Int8PtrPtrTy, and clang::CodeGen::Type.
Referenced by clang::CodeGen::CodeGenFunction::EmitARCCopyWeak(), and clang::CodeGen::CodeGenFunction::EmitARCMoveWeak().
|
static |
Perform an operation having the following signature: i8* (i8**)
Definition at line 1857 of file CGObjC.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, createARCRuntimeFunction(), clang::CodeGen::CGBuilderTy::CreateBitCast(), clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall(), clang::CodeGen::Address::getElementType(), clang::CodeGen::Address::getPointer(), clang::CodeGen::CodeGenTypeCache::Int8PtrPtrTy, clang::CodeGen::CodeGenTypeCache::Int8PtrTy, and clang::CodeGen::Type.
Referenced by clang::CodeGen::CodeGenFunction::EmitARCLoadWeak(), and clang::CodeGen::CodeGenFunction::EmitARCLoadWeakRetained().
|
static |
Definition at line 2459 of file CGObjC.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::EmitARCRetainAutoreleasedReturnValue(), and clang::CodeGen::CodeGenFunction::EmitARCRetainNonBlock().
Referenced by emitARCRetainCall().
|
static |
Given that the given expression is some sort of call (which does not return retained), emit a retain following it.
Definition at line 2454 of file CGObjC.cpp.
References emitARCRetainAfterCall(), and clang::CodeGen::CodeGenFunction::EmitScalarExpr().
Referenced by tryEmitARCRetainScalarExpr().
|
static |
Definition at line 2729 of file CGObjC.cpp.
References clang::CodeGen::CodeGenFunction::EmitARCRetain(), and tryEmitARCRetainLoadOfScalar().
Referenced by clang::CodeGen::CodeGenFunction::generateObjCGetterBody().
|
static |
Perform an operation having the following signature: i8* (i8**, i8*)
Definition at line 1883 of file CGObjC.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, createARCRuntimeFunction(), clang::CodeGen::CGBuilderTy::CreateBitCast(), clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall(), clang::CodeGen::Address::getElementType(), clang::CodeGen::Address::getPointer(), clang::CodeGen::CodeGenTypeCache::Int8PtrPtrTy, clang::CodeGen::CodeGenTypeCache::Int8PtrTy, and clang::CodeGen::Type.
Referenced by clang::CodeGen::CodeGenFunction::EmitARCInitWeak(), and clang::CodeGen::CodeGenFunction::EmitARCStoreWeak().
|
static |
Perform an operation having the signature i8* (i8*) where a null input causes a no-op and returns null.
Definition at line 1829 of file CGObjC.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, createARCRuntimeFunction(), clang::CodeGen::CGBuilderTy::CreateBitCast(), clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall(), clang::CodeGen::CodeGenTypeCache::Int8PtrTy, and clang::CodeGen::Type.
Referenced by clang::CodeGen::CodeGenFunction::EmitARCAutorelease(), clang::CodeGen::CodeGenFunction::EmitARCAutoreleaseReturnValue(), clang::CodeGen::CodeGenFunction::EmitARCRetainAutoreleasedReturnValue(), clang::CodeGen::CodeGenFunction::EmitARCRetainAutoreleaseNonBlock(), clang::CodeGen::CodeGenFunction::EmitARCRetainAutoreleaseReturnValue(), clang::CodeGen::CodeGenFunction::EmitARCRetainBlock(), and clang::CodeGen::CodeGenFunction::EmitARCRetainNonBlock().
|
static |
emitCPPObjectAtomicGetterCall - Call the runtime function to copy the ivar into the resturn slot.
Definition at line 836 of file CGObjC.cpp.
References clang::CodeGen::CallArgList::add(), clang::CodeGen::RequiredArgs::All, clang::CodeGen::CodeGenTypes::arrangeFreeFunctionCall(), clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CGBuilderTy::CreateBitCast(), clang::CodeGen::CodeGenFunction::EmitCall(), clang::CodeGen::CodeGenFunction::EmitLValueForIvar(), clang::CodeGen::ExtInfo, clang::CodeGen::RValue::get(), clang::CodeGen::CodeGenFunction::getContext(), clang::CodeGen::CGObjCRuntime::GetCppAtomicObjectGetFunction(), clang::CodeGen::CodeGenModule::getObjCRuntime(), clang::CodeGen::CodeGenFunction::getTypes(), clang::CodeGen::CodeGenTypeCache::Int8PtrTy, clang::CodeGen::CodeGenFunction::LoadObjCSelf(), clang::CodeGen::CodeGenFunction::TypeOfSelfObject(), clang::ASTContext::VoidPtrTy, and clang::ASTContext::VoidTy.
Referenced by clang::CodeGen::CodeGenFunction::generateObjCGetterBody().
|
static |
emitCPPObjectAtomicSetterCall - Call the runtime function to store the value from the first formal parameter into the given ivar, using the Cpp API for atomic Cpp objects with non-trivial copy assignment.
Definition at line 1080 of file CGObjC.cpp.
References clang::CodeGen::CallArgList::add(), clang::CodeGen::RequiredArgs::All, clang::CodeGen::CodeGenTypes::arrangeFreeFunctionCall(), clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CGBuilderTy::CreateBitCast(), clang::CodeGen::CodeGenFunction::EmitCall(), clang::CodeGen::CodeGenFunction::EmitLValue(), clang::CodeGen::CodeGenFunction::EmitLValueForIvar(), clang::CodeGen::ExtInfo, clang::CodeGen::RValue::get(), clang::CodeGen::CodeGenFunction::getContext(), clang::CodeGen::CGObjCRuntime::GetCppAtomicObjectSetFunction(), clang::QualType::getNonReferenceType(), clang::CodeGen::CodeGenModule::getObjCRuntime(), clang::CodeGen::LValue::getPointer(), clang::ValueDecl::getType(), clang::CodeGen::CodeGenFunction::getTypes(), clang::CodeGen::CodeGenTypeCache::Int8PtrTy, clang::CodeGen::CodeGenFunction::LoadObjCSelf(), clang::ObjCMethodDecl::param_begin(), clang::CodeGen::CodeGenFunction::TypeOfSelfObject(), clang::VK_LValue, clang::ASTContext::VoidPtrTy, and clang::ASTContext::VoidTy.
Referenced by clang::CodeGen::CodeGenFunction::generateObjCSetterBody().
|
static |
Definition at line 1372 of file CGObjC.cpp.
References clang::ObjCInterfaceDecl::all_declared_ivar_begin(), destroyARCStrongWithStore(), clang::QualType::DK_objc_strong_lifetime, clang::CodeGen::EHCleanup, clang::CodeGen::CodeGenFunction::EHStack, clang::ObjCImplDecl::getClassInterface(), clang::CodeGen::CodeGenFunction::getCleanupKind(), clang::CodeGen::CodeGenFunction::getDestroyer(), clang::ObjCIvarDecl::getNextIvar(), clang::QualType::isDestructedType(), clang::CodeGen::CodeGenFunction::LoadObjCSelf(), clang::CodeGen::CodeGenFunction::RunCleanupsScope::requiresCleanups(), and clang::ast_matchers::type.
Referenced by clang::CodeGen::CodeGenFunction::GenerateObjCCtorDtorMethod().
|
static |
emitStructGetterCall - Call the runtime function to load a property into the return value slot.
Definition at line 569 of file CGObjC.cpp.
References clang::CodeGen::CallArgList::add(), clang::CodeGen::RequiredArgs::All, clang::CodeGen::CodeGenTypes::arrangeFreeFunctionCall(), clang::ASTContext::BoolTy, clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, Context, clang::CodeGen::CGBuilderTy::CreateBitCast(), clang::CodeGen::CodeGenFunction::EmitCall(), clang::CodeGen::CodeGenFunction::EmitLValueForIvar(), clang::CodeGen::RValue::get(), clang::CodeGen::CodeGenFunction::getContext(), clang::CodeGen::CGObjCRuntime::GetGetStructFunction(), clang::CodeGen::CodeGenModule::getObjCRuntime(), clang::CodeGen::Address::getPointer(), clang::CodeGen::CodeGenModule::getSize(), clang::ASTContext::getSizeType(), clang::ValueDecl::getType(), clang::CodeGen::CodeGenFunction::getTypes(), clang::ASTContext::getTypeSizeInChars(), clang::CodeGen::CodeGenFunction::LoadObjCSelf(), clang::CodeGen::CodeGenFunction::ReturnValue, clang::CodeGen::CodeGenFunction::TypeOfSelfObject(), clang::CodeGen::CodeGenTypeCache::VoidPtrTy, clang::ASTContext::VoidPtrTy, and clang::ASTContext::VoidTy.
Referenced by clang::CodeGen::CodeGenFunction::generateObjCGetterBody().
|
static |
emitStructSetterCall - Call the runtime function to store the value from the first formal parameter into the given ivar.
Definition at line 1036 of file CGObjC.cpp.
References clang::CodeGen::CallArgList::add(), clang::CodeGen::RequiredArgs::All, clang::CodeGen::CodeGenTypes::arrangeFreeFunctionCall(), clang::ASTContext::BoolTy, clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CGBuilderTy::CreateBitCast(), clang::CodeGen::CodeGenFunction::EmitCall(), clang::CodeGen::CodeGenFunction::EmitLValue(), clang::CodeGen::CodeGenFunction::EmitLValueForIvar(), clang::CodeGen::ExtInfo, clang::CodeGen::RValue::get(), clang::CodeGen::CodeGenFunction::getContext(), clang::QualType::getNonReferenceType(), clang::CodeGen::CodeGenModule::getObjCRuntime(), clang::CodeGen::LValue::getPointer(), clang::CodeGen::CGObjCRuntime::GetSetStructFunction(), clang::CodeGen::CodeGenModule::getSize(), clang::ASTContext::getSizeType(), clang::ValueDecl::getType(), clang::CodeGen::CodeGenFunction::getTypes(), clang::ASTContext::getTypeSizeInChars(), clang::CodeGen::CodeGenTypeCache::Int8PtrTy, clang::CodeGen::CodeGenFunction::LoadObjCSelf(), clang::ObjCMethodDecl::param_begin(), clang::CodeGen::CodeGenFunction::TypeOfSelfObject(), clang::VK_LValue, clang::ASTContext::VoidPtrTy, and clang::ASTContext::VoidTy.
Referenced by clang::CodeGen::CodeGenFunction::generateObjCSetterBody().
Given an expression of ObjC pointer type, check whether it was immediately loaded from an ARC __weak l-value.
Definition at line 328 of file CGObjC.cpp.
References clang::CK_LValueToRValue, clang::Expr::getType(), clang::Expr::IgnoreParens(), clang::Type::isObjCRetainableType(), and clang::Qualifiers::OCL_Weak.
Referenced by clang::CodeGen::CodeGenFunction::EmitObjCMessageExpr().
|
static |
Return the maximum size that permits atomic accesses for the given architecture.
Definition at line 610 of file CGObjC.cpp.
References clang::CharUnits::fromQuantity(), and clang::CodeGen::CodeGenTypeCache::PointerSizeInBytes.
|
static |
Given the address of a variable of pointer type, find the correct null to store into it.
Definition at line 40 of file CGObjC.cpp.
References clang::CodeGen::Address::getElementType(), clang::CodeGen::Type, and clang::ast_matchers::type.
Referenced by destroyARCStrongWithStore(), clang::CodeGen::CodeGenFunction::EmitARCDestroyStrong(), clang::CodeGen::CodeGenFunction::EmitObjCMessageExpr(), and tryEmitARCRetainLoadOfScalar().
|
static |
Definition at line 811 of file CGObjC.cpp.
References clang::construct, clang::ObjCPropertyImplDecl::getGetterCXXConstructor(), and clang::Expr::isGLValue().
Referenced by clang::CodeGen::CodeGenFunction::GenerateObjCAtomicGetterCopyHelperFunction(), and clang::CodeGen::CodeGenFunction::generateObjCGetterBody().
|
static |
Definition at line 1116 of file CGObjC.cpp.
References clang::ObjCPropertyImplDecl::getSetterCXXAssignment().
Referenced by clang::CodeGen::CodeGenFunction::GenerateObjCAtomicSetterCopyHelperFunction(), and clang::CodeGen::CodeGenFunction::generateObjCSetterBody().
|
static |
Determine whether the given architecture supports unaligned atomic accesses.
They don't have to be fast, just faster than a function call and a mutex.
Definition at line 602 of file CGObjC.cpp.
Determine whether it might be important to emit a separate objc_retain_block on the result of the given expression, or whether it's okay to just emit it in a +1 context.
Definition at line 2501 of file CGObjC.cpp.
References clang::cast(), clang::CK_AnyPointerToBlockPointerCast, clang::CK_ARCConsumeObject, clang::CK_ARCProduceObject, clang::CK_ARCReclaimReturnedObject, clang::CK_BitCast, clang::CK_LValueToRValue, clang::CK_NoOp, clang::Expr::getType(), clang::Expr::IgnoreParens(), and clang::Type::isBlockPointerType().
Referenced by clang::CodeGen::CodeGenFunction::EmitARCExtendBlockObject(), and tryEmitARCRetainScalarExpr().
|
static |
Decide whether to extend the lifetime of the receiver of a returns-inner-pointer message.
Definition at line 269 of file CGObjC.cpp.
References clang::CK_LValueToRValue, clang::ObjCMessageExpr::Class, clang::CastExpr::getCastKind(), clang::DeclRefExpr::getDecl(), clang::ObjCMessageExpr::getInstanceReceiver(), clang::QualType::getObjCLifetime(), clang::ObjCMessageExpr::getReceiverKind(), clang::CastExpr::getSubExpr(), clang::Expr::getType(), clang::Decl::hasAttr(), clang::VarDecl::hasLocalStorage(), clang::Expr::IgnoreParens(), clang::ObjCMessageExpr::Instance, clang::Qualifiers::OCL_Strong, clang::ObjCMessageExpr::SuperClass, and clang::ObjCMessageExpr::SuperInstance.
Referenced by clang::CodeGen::CodeGenFunction::EmitObjCMessageExpr().
|
static |
Definition at line 2392 of file CGObjC.cpp.
References clang::CodeGen::CodeGenFunction::EmitARCLoadWeakRetained(), clang::CodeGen::CodeGenFunction::EmitLoadOfLValue(), clang::CodeGen::LValue::getAddress(), clang::QualType::getObjCLifetime(), clang::CodeGen::RValue::getScalarVal(), clang::Qualifiers::OCL_Autoreleasing, clang::Qualifiers::OCL_ExplicitNone, clang::Qualifiers::OCL_None, clang::Qualifiers::OCL_Strong, and clang::Qualifiers::OCL_Weak.
Referenced by emitARCRetainLoadOfScalar(), tryEmitARCRetainLoadOfScalar(), and tryEmitARCRetainScalarExpr().
|
static |
Definition at line 2412 of file CGObjC.cpp.
References clang::BO_Assign, clang::CodeGen::CodeGenFunction::EmitLoadOfLValue(), clang::CodeGen::CodeGenFunction::EmitLValue(), clang::CodeGen::CodeGenFunction::EmitScalarExpr(), clang::CodeGen::CodeGenFunction::EmitStoreOfScalar(), clang::CodeGen::LValue::getAddress(), clang::CodeGen::CodeGenFunction::getLangOpts(), getNullForVariable(), clang::QualType::getObjCLifetime(), clang::CodeGen::RValue::getScalarVal(), clang::Expr::getType(), clang::Expr::IgnoreParens(), clang::QualType::isConstQualified(), clang::QualType::isVolatileQualified(), clang::Expr::isXValue(), clang::Qualifiers::OCL_Strong, clang::Qualifiers::OCL_Weak, tryEmitARCRetainLoadOfScalar(), and clang::ast_matchers::type.
|
static |
Try to emit a PseudoObjectExpr at +1.
This massively duplicates emitPseudoObjectRValue.
Definition at line 2537 of file CGObjC.cpp.
References clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(), clang::CodeGen::RValue::get(), clang::PseudoObjectExpr::getResultExpr(), clang::PseudoObjectExpr::semantics_begin(), clang::PseudoObjectExpr::semantics_end(), and tryEmitARCRetainScalarExpr().
Referenced by tryEmitARCRetainScalarExpr().
|
static |
Definition at line 2588 of file CGObjC.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CK_AnyPointerToBlockPointerCast, clang::CK_ARCConsumeObject, clang::CK_ARCExtendBlockObject, clang::CK_ARCReclaimReturnedObject, clang::CK_BitCast, clang::CK_BlockPointerToObjCPointerCast, clang::CK_CPointerToObjCPointerCast, clang::CK_LValueToRValue, clang::CK_NoOp, clang::CodeGen::CodeGenFunction::ConvertType(), clang::CodeGen::CGBuilderTy::CreateBitCast(), clang::CodeGen::CodeGenFunction::EmitARCRetainBlock(), emitARCRetainCall(), clang::CodeGen::CodeGenFunction::EmitScalarExpr(), clang::Expr::getType(), clang::Type::hasPointerRepresentation(), clang::Expr::IgnoreParens(), shouldEmitSeparateBlockRetain(), tryEmitARCRetainLoadOfScalar(), tryEmitARCRetainPseudoObject(), clang::CodeGen::Type, and clang::UO_Extension.
Referenced by clang::CodeGen::CodeGenFunction::EmitARCExtendBlockObject(), clang::CodeGen::CodeGenFunction::EmitARCRetainAutoreleaseScalarExpr(), clang::CodeGen::CodeGenFunction::EmitARCRetainScalarExpr(), clang::CodeGen::CodeGenFunction::EmitARCStoreStrong(), clang::CodeGen::CodeGenFunction::EmitObjCMessageExpr(), and tryEmitARCRetainPseudoObject().
|
static |
Definition at line 1140 of file CGObjC.cpp.
References clang::CodeGen::CodeGenModule::getLangOpts(), clang::ObjCRuntime::hasOptimizedSetter(), clang::LangOptions::NonGC, and clang::LangOptions::ObjCRuntime.
Referenced by clang::CodeGen::CodeGenFunction::generateObjCSetterBody().
1.8.6