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"
129 llvm_unreachable(
"bad ABI kind");
146 llvm_unreachable(
"bad ABI kind");
226 llvm_unreachable(
"bad ABI kind");
282 llvm_unreachable(
"bad ABI kind");
286 bool tryParse(llvm::StringRef name);
293 return !(left == right);
The basic abstraction for the target C++ ABI.
bool areArgsDestroyedLeftToRightInCallee() const
bool hasPrimaryVBases() const
Does this ABI allow virtual bases to be primary base classes?
friend bool operator!=(const TargetCXXABI &left, const TargetCXXABI &right)
friend bool operator==(const TargetCXXABI &left, const TargetCXXABI &right)
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.
bool tryParse(llvm::StringRef name)
Try to parse an ABI name, returning false on error.
Kind
The basic C++ ABI kind.
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.