16 #ifndef LLVM_CLANG_BASIC_TARGETCXXABI_H
17 #define LLVM_CLANG_BASIC_TARGETCXXABI_H
19 #include "llvm/ADT/Triple.h"
20 #include "llvm/Support/ErrorHandling.h"
151 llvm_unreachable(
"bad ABI kind");
170 llvm_unreachable(
"bad ABI kind");
200 llvm_unreachable(
"bad ABI kind");
282 llvm_unreachable(
"bad ABI kind");
340 llvm_unreachable(
"bad ABI kind");
348 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.
bool areArgsDestroyedLeftToRightInCallee() const
Are arguments to a call destroyed left to right in the callee? This is a fundamental language change...
bool areMemberFunctionsAligned() const
Are member functions differently aligned?
The generic Mips ABI is a modified version of the Itanium ABI.
bool hasPrimaryVBases() const
Does this ABI allow virtual bases to be primary base classes?
The Microsoft ABI is the ABI used by Microsoft Visual Studio (and compatible compilers).
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 hasConstructorVariants() const
Does this ABI have different entrypoints for complete-object and base-subobject constructors?
bool canKeyFunctionBeInline() const
Can an out-of-line inline function serve as a key function?
bool isMicrosoft() const
Is this ABI an MSVC-compatible ABI?
bool isMemberFunctionCCDefault() const
Is the default C++ member function calling convention the same as the default calling convention...
TailPaddingUseRules getTailPaddingUseRules() const
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.
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...
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.
Kind
The basic C++ ABI kind.
TailPaddingUseRules
When is record layout allowed to allocate objects in the tail padding of a base class?
bool isItaniumFamily() const
Does this ABI generally fall into the Itanium family of ABIs?
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.