clang 22.0.0git
|
ABIInfo - Target specific hooks for defining how a type should be passed or returned from functions. More...
#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CodeGen/ABIInfo.h"
Public Member Functions | |
ABIInfo (CodeGen::CodeGenTypes &cgt) | |
virtual | ~ABIInfo () |
virtual bool | allowBFloatArgsAndRet () const |
CodeGen::CGCXXABI & | getCXXABI () const |
ASTContext & | getContext () const |
llvm::LLVMContext & | getVMContext () const |
const llvm::DataLayout & | getDataLayout () const |
const TargetInfo & | getTarget () const |
const CodeGenOptions & | getCodeGenOpts () const |
llvm::CallingConv::ID | getRuntimeCC () const |
Return the calling convention to use for system runtime functions. | |
virtual void | computeInfo (CodeGen::CGFunctionInfo &FI) const =0 |
virtual RValue | EmitVAArg (CodeGen::CodeGenFunction &CGF, CodeGen::Address VAListAddr, QualType Ty, AggValueSlot Slot) const =0 |
EmitVAArg - Emit the target dependent code to load a value of. | |
bool | isAndroid () const |
bool | isOHOSFamily () const |
virtual RValue | EmitMSVAArg (CodeGen::CodeGenFunction &CGF, CodeGen::Address VAListAddr, QualType Ty, AggValueSlot Slot) const |
Emit the target dependent code to load a value of. | |
virtual bool | isHomogeneousAggregateBaseType (QualType Ty) const |
virtual bool | isHomogeneousAggregateSmallEnough (const Type *Base, uint64_t Members) const |
virtual bool | isZeroLengthBitfieldPermittedInHomogeneousAggregate () const |
bool | isHomogeneousAggregate (QualType Ty, const Type *&Base, uint64_t &Members) const |
isHomogeneousAggregate - Return true if a type is an ELFv2 homogeneous aggregate. | |
bool | isPromotableIntegerTypeForABI (QualType Ty) const |
CodeGen::ABIArgInfo | getNaturalAlignIndirect (QualType Ty, unsigned AddrSpace, bool ByVal=true, bool Realign=false, llvm::Type *Padding=nullptr) const |
A convenience method to return an indirect ABIArgInfo with an expected alignment equal to the ABI alignment of the given type. | |
CodeGen::ABIArgInfo | getNaturalAlignIndirectInReg (QualType Ty, bool Realign=false) const |
virtual void | appendAttributeMangling (TargetAttr *Attr, raw_ostream &Out) const |
virtual void | appendAttributeMangling (TargetVersionAttr *Attr, raw_ostream &Out) const |
virtual void | appendAttributeMangling (TargetClonesAttr *Attr, unsigned Index, raw_ostream &Out) const |
virtual void | appendAttributeMangling (StringRef AttrStr, raw_ostream &Out) const |
virtual llvm::FixedVectorType * | getOptimalVectorMemoryType (llvm::FixedVectorType *T, const LangOptions &Opt) const |
Returns the optimal vector memory type based on the given vector type. | |
virtual llvm::Value * | createCoercedLoad (Address SrcAddr, const ABIArgInfo &AI, CodeGenFunction &CGF) const |
virtual void | createCoercedStore (llvm::Value *Val, Address DstAddr, const ABIArgInfo &AI, bool DestIsVolatile, CodeGenFunction &CGF) const |
Protected Attributes | |
CodeGen::CodeGenTypes & | CGT |
llvm::CallingConv::ID | RuntimeCC |
ABIInfo - Target specific hooks for defining how a type should be passed or returned from functions.
|
inline |
Definition at line 54 of file ABIInfo.h.
References clang::C, CGT, and RuntimeCC.
Referenced by clang::CodeGen::DefaultABIInfo::DefaultABIInfo(), and WebAssemblyABIInfo::WebAssemblyABIInfo().
|
virtualdefault |
|
inlinevirtual |
|
virtual |
Definition at line 204 of file ABIInfo.cpp.
References CGT, clang::ParsedTargetAttr::Features, clang::TargetInfo::getFMVPriority(), and clang::TargetInfo::parseTargetAttr().
|
virtual |
Definition at line 186 of file ABIInfo.cpp.
References appendAttributeMangling().
Referenced by appendAttributeMangling(), appendAttributeMangling(), appendAttributeMangling(), and getMangledNameImpl().
|
virtual |
Definition at line 198 of file ABIInfo.cpp.
References appendAttributeMangling().
|
virtual |
Definition at line 193 of file ABIInfo.cpp.
References appendAttributeMangling().
|
pure virtual |
Implemented in clang::CodeGen::DefaultABIInfo.
|
virtual |
Definition at line 246 of file ABIInfo.cpp.
|
virtual |
Definition at line 251 of file ABIInfo.cpp.
|
virtual |
Emit the target dependent code to load a value of.
__builtin_ms_va_list
pointed to by Definition at line 42 of file ABIInfo.cpp.
References clang::CodeGen::RValue::getIgnored().
|
pure virtual |
EmitVAArg - Emit the target dependent code to load a value of.
Implemented in clang::CodeGen::DefaultABIInfo.
References clang::T, and clang::CodeGen::Type.
const CodeGenOptions & ABIInfo::getCodeGenOpts | ( | ) | const |
Definition at line 32 of file ABIInfo.cpp.
References CGT.
ASTContext & ABIInfo::getContext | ( | ) | const |
Definition at line 20 of file ABIInfo.cpp.
References CGT.
Referenced by clang::CodeGen::DefaultABIInfo::classifyArgumentType(), clang::CodeGen::DefaultABIInfo::classifyReturnType(), getNaturalAlignIndirect(), getNaturalAlignIndirectInReg(), isHomogeneousAggregate(), isPromotableIntegerTypeForABI(), and isZeroLengthBitfieldPermittedInHomogeneousAggregate().
CGCXXABI & ABIInfo::getCXXABI | ( | ) | const |
Definition at line 18 of file ABIInfo.cpp.
References CGT.
Referenced by clang::CodeGen::DefaultABIInfo::classifyArgumentType(), clang::CodeGen::DefaultABIInfo::computeInfo(), and isHomogeneousAggregate().
const llvm::DataLayout & ABIInfo::getDataLayout | ( | ) | const |
Definition at line 26 of file ABIInfo.cpp.
References CGT.
Referenced by clang::CodeGen::DefaultABIInfo::classifyArgumentType(), clang::CodeGen::classifyReturnType(), and clang::CodeGen::DefaultABIInfo::classifyReturnType().
ABIArgInfo ABIInfo::getNaturalAlignIndirect | ( | QualType | Ty, |
unsigned | AddrSpace, | ||
bool | ByVal = true, | ||
bool | Realign = false, | ||
llvm::Type * | Padding = nullptr ) const |
A convenience method to return an indirect ABIArgInfo with an expected alignment equal to the ABI alignment of the given type.
Definition at line 173 of file ABIInfo.cpp.
References getContext(), and clang::CodeGen::ABIArgInfo::getIndirect().
Referenced by clang::CodeGen::DefaultABIInfo::classifyArgumentType(), clang::CodeGen::classifyReturnType(), and clang::CodeGen::DefaultABIInfo::classifyReturnType().
ABIArgInfo ABIInfo::getNaturalAlignIndirectInReg | ( | QualType | Ty, |
bool | Realign = false ) const |
Definition at line 180 of file ABIInfo.cpp.
References getContext(), and clang::CodeGen::ABIArgInfo::getIndirectInReg().
|
virtual |
Returns the optimal vector memory type based on the given vector type.
For example, on certain targets, a vector with 3 elements might be promoted to one with 4 elements to improve performance.
Definition at line 239 of file ABIInfo.cpp.
References clang::T.
|
inline |
const TargetInfo & ABIInfo::getTarget | ( | ) | const |
Definition at line 30 of file ABIInfo.cpp.
References CGT.
Referenced by isAndroid(), and isOHOSFamily().
llvm::LLVMContext & ABIInfo::getVMContext | ( | ) | const |
Definition at line 22 of file ABIInfo.cpp.
References CGT.
bool ABIInfo::isAndroid | ( | ) | const |
Definition at line 36 of file ABIInfo.cpp.
References getTarget(), and clang::TargetInfo::getTriple().
isHomogeneousAggregate - Return true if a type is an ELFv2 homogeneous aggregate.
Base is set to the base element type, and Members is set to the number of base elements.
Definition at line 61 of file ABIInfo.cpp.
References clang::Type::getAs(), clang::Type::getAsRecordDecl(), getContext(), getCXXABI(), clang::QualType::getTypePtr(), clang::ASTContext::getTypeSize(), clang::ASTContext::getVectorType(), clang::CodeGen::isEmptyRecord(), isHomogeneousAggregate(), isHomogeneousAggregateBaseType(), isHomogeneousAggregateSmallEnough(), clang::Type::isVectorType(), isZeroLengthBitfieldPermittedInHomogeneousAggregate(), and clang::CodeGen::Type.
Referenced by diagnoseIfNeedsFPReg(), isHomogeneousAggregate(), and isTrivialForMSVC().
Definition at line 47 of file ABIInfo.cpp.
Referenced by isHomogeneousAggregate().
|
virtual |
Definition at line 51 of file ABIInfo.cpp.
References clang::CodeGen::Type.
Referenced by isHomogeneousAggregate().
bool ABIInfo::isOHOSFamily | ( | ) | const |
Definition at line 38 of file ABIInfo.cpp.
References getTarget(), and clang::TargetInfo::getTriple().
Definition at line 162 of file ABIInfo.cpp.
References clang::Type::getAs(), and getContext().
Referenced by clang::CodeGen::DefaultABIInfo::classifyArgumentType(), and clang::CodeGen::DefaultABIInfo::classifyReturnType().
|
virtual |
Definition at line 56 of file ABIInfo.cpp.
References getContext(), and clang::ASTContext::getLangOpts().
Referenced by isHomogeneousAggregate().
|
protected |
Definition at line 50 of file ABIInfo.h.
Referenced by ABIInfo(), appendAttributeMangling(), clang::CodeGen::DefaultABIInfo::classifyArgumentType(), clang::CodeGen::DefaultABIInfo::DefaultABIInfo(), getCodeGenOpts(), getContext(), getCXXABI(), getDataLayout(), getTarget(), getVMContext(), and WebAssemblyABIInfo::WebAssemblyABIInfo().
|
protected |
Definition at line 51 of file ABIInfo.h.
Referenced by ABIInfo(), and getRuntimeCC().