clang
3.7.0
|
The basic abstraction for the target Objective-C runtime. More...
#include <ObjCRuntime.h>
Public Types | |
enum | Kind { MacOSX, FragileMacOSX, iOS, GCC, GNUstep, ObjFW } |
The basic Objective-C runtimes that we know about. More... | |
Public Member Functions | |
ObjCRuntime () | |
A bogus initialization of the runtime. More... | |
ObjCRuntime (Kind kind, const VersionTuple &version) | |
void | set (Kind kind, VersionTuple version) |
Kind | getKind () const |
const VersionTuple & | getVersion () const |
bool | isNonFragile () const |
Does this runtime follow the set of implied behaviors for a "non-fragile" ABI? More... | |
bool | isFragile () const |
bool | isLegacyDispatchDefaultForArch (llvm::Triple::ArchType Arch) |
The default dispatch mechanism to use for the specified architecture. More... | |
bool | isGNUFamily () const |
Is this runtime basically of the GNU family of runtimes? More... | |
bool | isNeXTFamily () const |
Is this runtime basically of the NeXT family of runtimes? More... | |
bool | allowsARC () const |
Does this runtime allow ARC at all? More... | |
bool | hasNativeARC () const |
Does this runtime natively provide the ARC entrypoints? More... | |
bool | hasOptimizedSetter () const |
Does this runtime supports optimized setter entrypoints? More... | |
bool | allowsWeak () const |
Does this runtime allow the use of __weak? More... | |
bool | hasNativeWeak () const |
Does this runtime natively provide ARC-compliant 'weak' entrypoints? More... | |
bool | hasSubscripting () const |
Does this runtime directly support the subscripting methods? More... | |
bool | allowsSizeofAlignof () const |
Does this runtime allow sizeof or alignof on object types? More... | |
bool | allowsPointerArithmetic () const |
Does this runtime allow pointer arithmetic on objects? More... | |
bool | isSubscriptPointerArithmetic () const |
Is subscripting pointer arithmetic? More... | |
bool | hasTerminate () const |
Does this runtime provide an objc_terminate function? More... | |
bool | hasWeakClassImport () const |
Does this runtime support weakly importing classes? More... | |
bool | hasUnwindExceptions () const |
Does this runtime use zero-cost exceptions? More... | |
bool | hasAtomicCopyHelper () const |
bool | tryParse (StringRef input) |
Try to parse an Objective-C runtime specification from the given string. More... | |
std::string | getAsString () const |
Friends | |
bool | operator== (const ObjCRuntime &left, const ObjCRuntime &right) |
bool | operator!= (const ObjCRuntime &left, const ObjCRuntime &right) |
The basic abstraction for the target Objective-C runtime.
Definition at line 25 of file ObjCRuntime.h.
The basic Objective-C runtimes that we know about.
Definition at line 28 of file ObjCRuntime.h.
|
inline |
A bogus initialization of the runtime.
Definition at line 61 of file ObjCRuntime.h.
|
inline |
Definition at line 63 of file ObjCRuntime.h.
|
inline |
Does this runtime allow ARC at all?
Definition at line 134 of file ObjCRuntime.h.
References FragileMacOSX, GCC, getKind(), GNUstep, iOS, MacOSX, and ObjFW.
Referenced by ParseLangArgs().
|
inline |
Does this runtime allow pointer arithmetic on objects?
This covers +, -, ++, –, and (if isSubscriptPointerArithmetic() yields true) [].
Definition at line 220 of file ObjCRuntime.h.
References FragileMacOSX, GCC, getKind(), GNUstep, iOS, MacOSX, and ObjFW.
Referenced by checkArithmeticOnObjCPointer(), and isSubscriptPointerArithmetic().
|
inline |
Does this runtime allow sizeof or alignof on object types?
Definition at line 212 of file ObjCRuntime.h.
References isFragile().
Referenced by CheckObjCTraitOperandConstraints().
|
inline |
Does this runtime allow the use of __weak?
Definition at line 180 of file ObjCRuntime.h.
References hasNativeWeak().
Referenced by ParseLangArgs().
std::string ObjCRuntime::getAsString | ( | ) | const |
Definition at line 19 of file ObjCRuntime.cpp.
References clang::Result.
|
inline |
Definition at line 71 of file ObjCRuntime.h.
Referenced by allowsARC(), allowsPointerArithmetic(), clang::driver::tools::Clang::ConstructJob(), clang::CodeGen::CreateGNUObjCRuntime(), getObjCPersonality(), getObjCXXPersonality(), hasAtomicCopyHelper(), hasNativeARC(), hasOptimizedSetter(), hasSubscripting(), hasTerminate(), hasUnwindExceptions(), hasWeakClassImport(), InitializePredefinedMacros(), isGNUFamily(), isLegacyDispatchDefaultForArch(), isNonFragile(), clang::operator<<(), and ParseLangArgs().
|
inline |
Definition at line 72 of file ObjCRuntime.h.
Referenced by getObjCPersonality(), hasAtomicCopyHelper(), hasNativeARC(), hasOptimizedSetter(), hasSubscripting(), hasTerminate(), InitializePredefinedMacros(), isLegacyDispatchDefaultForArch(), and clang::operator<<().
|
inline |
Definition at line 281 of file ObjCRuntime.h.
References FragileMacOSX, getKind(), getVersion(), GNUstep, iOS, and MacOSX.
Referenced by clang::CodeGen::CodeGenFunction::GenerateObjCAtomicGetterCopyHelperFunction(), and clang::CodeGen::CodeGenFunction::GenerateObjCAtomicSetterCopyHelperFunction().
|
inline |
Does this runtime natively provide the ARC entrypoints?
ARC cannot be directly supported on a platform that does not provide these entrypoints, although it may be supportable via a stub library.
Definition at line 151 of file ObjCRuntime.h.
References FragileMacOSX, GCC, getKind(), getVersion(), GNUstep, iOS, MacOSX, and ObjFW.
Referenced by clang::driver::toolchains::DarwinClang::AddLinkARCArgs(), createARCRuntimeFunction(), clang::CodeGen::CodeGenFunction::EmitObjCAutoreleasePoolStmt(), and hasNativeWeak().
|
inline |
Does this runtime natively provide ARC-compliant 'weak' entrypoints?
Definition at line 186 of file ObjCRuntime.h.
References hasNativeARC().
Referenced by allowsWeak().
|
inline |
Does this runtime supports optimized setter entrypoints?
Definition at line 165 of file ObjCRuntime.h.
References getKind(), getVersion(), GNUstep, iOS, and MacOSX.
Referenced by UseOptimizedSetter().
|
inline |
Does this runtime directly support the subscripting methods?
This is really a property of the library, not the runtime.
Definition at line 195 of file ObjCRuntime.h.
References FragileMacOSX, GCC, getKind(), getVersion(), GNUstep, iOS, MacOSX, and ObjFW.
Referenced by clang::driver::toolchains::DarwinClang::AddLinkARCArgs().
|
inline |
Does this runtime provide an objc_terminate function?
This is used in handlers for exceptions during the unwind process; without it, abort() must be used in pure ObjC files.
Definition at line 243 of file ObjCRuntime.h.
References FragileMacOSX, GCC, getKind(), getVersion(), GNUstep, iOS, MacOSX, and ObjFW.
Referenced by clang::CodeGen::CodeGenModule::getTerminateFn().
|
inline |
Does this runtime use zero-cost exceptions?
Definition at line 269 of file ObjCRuntime.h.
References FragileMacOSX, GCC, getKind(), GNUstep, iOS, MacOSX, and ObjFW.
Referenced by hasUnwindExceptions().
|
inline |
Does this runtime support weakly importing classes?
Definition at line 256 of file ObjCRuntime.h.
References FragileMacOSX, GCC, getKind(), GNUstep, iOS, MacOSX, and ObjFW.
Referenced by clang::Decl::canBeWeakImported(), and HasFeature().
|
inline |
The inverse of isNonFragile(): does this runtime follow the set of implied behaviors for a "fragile" ABI?
Definition at line 90 of file ObjCRuntime.h.
References isNonFragile().
Referenced by clang::Sema::ActOnPropertyImplDecl(), allowsSizeofAlignof(), clang::Sema::BuildExceptionDeclaration(), and clang::Sema::DefaultSynthesizeProperties().
|
inline |
Is this runtime basically of the GNU family of runtimes?
Definition at line 112 of file ObjCRuntime.h.
References FragileMacOSX, GCC, getKind(), GNUstep, iOS, MacOSX, and ObjFW.
Referenced by EncodeBitField(), clang::CodeGen::CodeGenModule::GetAddrOfRTTIDescriptor(), and isNeXTFamily().
|
inline |
The default dispatch mechanism to use for the specified architecture.
Definition at line 93 of file ObjCRuntime.h.
References getKind(), getVersion(), GNUstep, isNonFragile(), and MacOSX.
Referenced by clang::driver::tools::Clang::ConstructJob().
|
inline |
Is this runtime basically of the NeXT family of runtimes?
Definition at line 127 of file ObjCRuntime.h.
References isGNUFamily().
Referenced by CheckProtocolMethodDefs(), clang::driver::tools::Clang::ConstructJob(), and InitializePredefinedMacros().
|
inline |
Does this runtime follow the set of implied behaviors for a "non-fragile" ABI?
Definition at line 76 of file ObjCRuntime.h.
References FragileMacOSX, GCC, getKind(), GNUstep, iOS, MacOSX, and ObjFW.
Referenced by clang::Sema::ActOnAtEnd(), clang::Sema::ActOnDefs(), clang::Sema::ActOnPropertyImplDecl(), clang::Sema::CheckImplementationIvars(), clang::driver::tools::Clang::ConstructJob(), DiagnoseUnimplementedAccessor(), clang::CodeGen::CodeGenModule::GetAddrOfConstantString(), HasFeature(), clang::Sema::ImplMethodsVsClassMethods(), InitializePredefinedMacros(), isFragile(), isLegacyDispatchDefaultForArch(), and shouldUseExceptionTablesForObjCExceptions().
|
inline |
Is subscripting pointer arithmetic?
Definition at line 235 of file ObjCRuntime.h.
References allowsPointerArithmetic().
Referenced by clang::LangOptions::isSubscriptPointerArithmetic().
|
inline |
Definition at line 66 of file ObjCRuntime.h.
bool ObjCRuntime::tryParse | ( | StringRef | input | ) |
Try to parse an Objective-C runtime specification from the given string.
Definition at line 43 of file ObjCRuntime.cpp.
References FragileMacOSX, GCC, GNUstep, iOS, MacOSX, ObjFW, and clang::VersionTuple::tryParse().
Referenced by ParseLangArgs().
|
friend |
Definition at line 306 of file ObjCRuntime.h.
|
friend |
Definition at line 301 of file ObjCRuntime.h.