: TheKind(kind), Version(version) {}
72 void set(
Kindkind, VersionTuple version) {
78 constVersionTuple &
getVersion()
const{
returnVersion; }
85 case GCC:
return false;
86 case MacOSX:
return true;
88 case ObjFW:
return true;
89 case iOS:
return true;
92llvm_unreachable(
"bad kind");
105 casellvm::Triple::arm:
106 casellvm::Triple::x86:
107 casellvm::Triple::x86_64:
108 return!(
getVersion() >= VersionTuple(1, 6));
109 casellvm::Triple::aarch64:
110 casellvm::Triple::mips64:
111 return!(
getVersion() >= VersionTuple(1, 9));
112 casellvm::Triple::riscv64:
113 return!(
getVersion() >= VersionTuple(2, 2));
120 returnArch != llvm::Triple::x86_64;
139llvm_unreachable(
"bad kind");
155 case MacOSX:
return true;
156 case iOS:
return true;
158 case GCC:
return false;
160 case ObjFW:
return true;
162llvm_unreachable(
"bad kind");
177 case GCC:
return false;
179 case ObjFW:
return true;
181llvm_unreachable(
"bad kind");
220 return(
getVersion() >= VersionTuple(2, 2));
224llvm_unreachable(
"bad kind");
261llvm_unreachable(
"bad kind");
270 return getVersion() >= VersionTuple(10, 14, 4);
324 case GCC:
return true;
326 case ObjFW:
return true;
328llvm_unreachable(
"bad kind");
352llvm_unreachable(
"bad kind");
370 case GCC:
return false;
372 case ObjFW:
return false;
374llvm_unreachable(
"bad kind");
380 case MacOSX:
return true;
381 case iOS:
return true;
384 case GCC:
return true;
386 case ObjFW:
return true;
388llvm_unreachable(
"bad kind");
394 case MacOSX:
return true;
395 case iOS:
return true;
398 case GCC:
return true;
400 case ObjFW:
return true;
402llvm_unreachable(
"bad kind");
414 default:
return false;
463llvm_unreachable(
"bad kind");
470 case MacOSX:
return true;
471 case iOS:
return true;
473 case GCC:
return false;
475 return(
getVersion() >= VersionTuple(2, 2));
476 case ObjFW:
return false;
478llvm_unreachable(
"bad kind");
495 return!(left == right);
502 template<
typenameHasherT, llvm::endianness Endianness>
503 friend void addHash(llvm::HashBuilder<HasherT, Endianness> &HBuilder,
509raw_ostream &
operator<<(raw_ostream &out,
constObjCRuntime &value);
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.
The basic abstraction for the target Objective-C runtime.
bool allowsWeak() const
Does this runtime allow the use of __weak?
bool shouldUseRuntimeFunctionsForAlloc() const
Does this runtime provide entrypoints that are likely to be faster than an ordinary message send of t...
bool hasEmptyCollections() const
Are the empty collection symbols available?
friend bool operator!=(const ObjCRuntime &left, const ObjCRuntime &right)
bool hasAtomicCopyHelper() const
bool isSubscriptPointerArithmetic() const
Is subscripting pointer arithmetic?
bool shouldUseRuntimeFunctionForCombinedAllocInit() const
Does this runtime provide the objc_alloc_init entrypoint? This can apply the same optimization as obj...
bool hasUnwindExceptions() const
Does this runtime use zero-cost exceptions?
friend bool operator==(const ObjCRuntime &left, const ObjCRuntime &right)
bool allowsSizeofAlignof() const
Does this runtime allow sizeof or alignof on object types?
bool hasARCUnsafeClaimAutoreleasedReturnValue() const
Is objc_unsafeClaimAutoreleasedReturnValue available?
void set(Kind kind, VersionTuple version)
bool hasTerminate() const
Does this runtime provide an objc_terminate function?
ObjCRuntime()=default
A bogus initialization of the runtime.
bool hasNativeARC() const
Does this runtime natively provide the ARC entrypoints?
bool isLegacyDispatchDefaultForArch(llvm::Triple::ArchType Arch)
The default dispatch mechanism to use for the specified architecture.
bool isNeXTFamily() const
Is this runtime basically of the NeXT family of runtimes?
bool hasOptimizedSetter() const
Does this runtime supports optimized setter entrypoints?
bool hasNativeWeak() const
Does this runtime natively provide ARC-compliant 'weak' entrypoints?
ObjCRuntime(Kind kind, const VersionTuple &version)
bool allowsPointerArithmetic() const
Does this runtime allow pointer arithmetic on objects?
bool hasSubscripting() const
Does this runtime directly support the subscripting methods?
const VersionTuple & getVersion() const
bool tryParse(StringRef input)
Try to parse an Objective-C runtime specification from the given string.
bool isNonFragile() const
Does this runtime follow the set of implied behaviors for a "non-fragile" ABI?
std::string getAsString() const
friend llvm::hash_code hash_value(const ObjCRuntime &OCR)
bool hasWeakClassImport() const
Does this runtime support weakly importing classes?
bool isGNUFamily() const
Is this runtime basically of the GNU family of runtimes?
bool allowsARC() const
Does this runtime allow ARC at all?
bool allowsDirectDispatch() const
Does this runtime supports direct dispatch.
bool shouldUseARCFunctionsForRetainRelease() const
Does this runtime provide ARC entrypoints that are likely to be faster than an ordinary message send ...
friend void addHash(llvm::HashBuilder< HasherT, Endianness > &HBuilder, const ObjCRuntime &OCR)
Kind
The basic Objective-C runtimes that we know about.
@ MacOSX
'macosx' is the Apple-provided NeXT-derived runtime on Mac OS X platforms that use the non-fragile AB...
@ FragileMacOSX
'macosx-fragile' is the Apple-provided NeXT-derived runtime on Mac OS X platforms that use the fragil...
@ GNUstep
'gnustep' is the modern non-fragile GNUstep runtime.
@ ObjFW
'objfw' is the Objective-C runtime included in ObjFW
@ iOS
'ios' is the Apple-provided NeXT-derived runtime on iOS or the iOS simulator; it is always non-fragil...
@ GCC
'gcc' is the Objective-C runtime shipped with GCC, implementing a fragile Objective-C ABI
@ WatchOS
'watchos' is a variant of iOS for Apple's watchOS.
bool allowsClassStubs() const
Returns true if this Objective-C runtime supports Objective-C class stubs.
bool isFragile() const
The inverse of isNonFragile(): does this runtime follow the set of implied behaviors for a "fragile" ...
The JSON file list parser is used to communicate input to InstallAPI.
const StreamingDiagnostic & operator<<(const StreamingDiagnostic &DB, const ASTContext::SectionInfo &Section)
Insertion operator for diagnostics.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4