15 #ifndef LLVM_CLANG_BASIC_TARGETCXXABI_H 16 #define LLVM_CLANG_BASIC_TARGETCXXABI_H 18 #include "llvm/Support/ErrorHandling.h" 156 llvm_unreachable(
"bad ABI kind");
176 llvm_unreachable(
"bad ABI kind");
207 llvm_unreachable(
"bad ABI kind");
283 llvm_unreachable(
"bad ABI kind");
333 llvm_unreachable(
"bad ABI kind");
341 return !(left == right);
The generic AArch64 ABI is also a modified version of the Itanium ABI, but it has fewer divergences t...
Only allocate objects in the tail padding of a base class if the base class is not POD according to t...
The iOS 64-bit ABI is follows ARM's published 64-bit ABI more closely, but we don't guarantee to foll...
The basic abstraction for the target C++ ABI.
The generic Mips ABI is a modified version of the Itanium ABI.
bool canKeyFunctionBeInline() const
Can an out-of-line inline function serve as a key function?
bool isItaniumFamily() const
Does this ABI generally fall into the Itanium family of ABIs?
The Microsoft ABI is the ABI used by Microsoft Visual Studio (and compatible compilers).
bool hasConstructorVariants() const
Does this ABI have different entrypoints for complete-object and base-subobject constructors?
The iOS ABI is a partial implementation of the ARM ABI.
friend bool operator!=(const TargetCXXABI &left, const TargetCXXABI &right)
friend bool operator==(const TargetCXXABI &left, const TargetCXXABI &right)
The generic ARM ABI is a modified version of the Itanium ABI proposed by ARM for use on ARM-based pla...
bool hasKeyFunctions() const
Does this ABI use key functions? If so, class data such as the vtable is emitted with strong linkage ...
TargetCXXABI()
A bogus initialization of the platform ABI.
bool hasPrimaryVBases() const
Does this ABI allow virtual bases to be primary base classes?
WatchOS is a modernisation of the iOS ABI, which roughly means it's the iOS64 ABI ported to 32-bits...
Only allocate objects in the tail padding of a base class if the base class is not POD according to t...
bool areMemberFunctionsAligned() const
Are member functions differently aligned?
The generic Itanium ABI is the standard ABI of most open-source and Unix-like platforms.
The WebAssembly ABI is a modified version of the Itanium ABI.
Dataflow Directional Tag Classes.
Kind
The basic C++ ABI kind.
TailPaddingUseRules getTailPaddingUseRules() const
bool areArgsDestroyedLeftToRightInCallee() const
Are arguments to a call destroyed left to right in the callee? This is a fundamental language change...
The Fuchsia ABI is a modified version of the Itanium ABI.
TailPaddingUseRules
When is record layout allowed to allocate objects in the tail padding of a base class?
unsigned kind
All of the diagnostics that can be emitted by the frontend.
The tail-padding of a base class is always theoretically available, even if it's POD.
bool isMicrosoft() const
Is this ABI an MSVC-compatible ABI?