clang 20.0.0git
|
DefaultABIInfo - The default implementation for ABI specific details. More...
#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CodeGen/ABIInfoImpl.h"
Public Member Functions | |
DefaultABIInfo (CodeGen::CodeGenTypes &CGT) | |
virtual | ~DefaultABIInfo () |
ABIArgInfo | classifyReturnType (QualType RetTy) const |
ABIArgInfo | classifyArgumentType (QualType RetTy) const |
void | computeInfo (CGFunctionInfo &FI) const override |
RValue | EmitVAArg (CodeGenFunction &CGF, Address VAListAddr, QualType Ty, AggValueSlot Slot) const override |
EmitVAArg - Emit the target dependent code to load a value of. | |
Public Member Functions inherited from clang::CodeGen::ABIInfo | |
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, 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 |
Additional Inherited Members | |
Protected Attributes inherited from clang::CodeGen::ABIInfo | |
CodeGen::CodeGenTypes & | CGT |
llvm::CallingConv::ID | RuntimeCC |
DefaultABIInfo - The default implementation for ABI specific details.
This implementation provides information which results in self-consistent and sensible LLVM IR generation, but does not conform to any particular ABI.
Definition at line 21 of file ABIInfoImpl.h.
|
inline |
Definition at line 23 of file ABIInfoImpl.h.
|
virtualdefault |
ABIArgInfo DefaultABIInfo::classifyArgumentType | ( | QualType | RetTy | ) | const |
Definition at line 17 of file ABIInfoImpl.cpp.
References clang::CodeGen::ABIInfo::CGT, clang::CodeGen::CodeGenTypes::ConvertType(), clang::Type::getAs(), clang::CodeGen::ABIInfo::getContext(), clang::CodeGen::ABIInfo::getCXXABI(), clang::CodeGen::ABIArgInfo::getDirect(), clang::CodeGen::ABIArgInfo::getExtend(), clang::CodeGen::ABIInfo::getNaturalAlignIndirect(), clang::CodeGen::getRecordArgABI(), clang::ASTContext::getTargetInfo(), clang::ASTContext::getTypeSize(), clang::TargetInfo::hasInt128Type(), clang::ASTContext::Int128Ty, clang::CodeGen::isAggregateTypeForABI(), clang::CodeGen::ABIInfo::isPromotableIntegerTypeForABI(), clang::ASTContext::LongLongTy, clang::CodeGen::CGCXXABI::RAA_DirectInMemory, and clang::CodeGen::useFirstFieldIfTransparentUnion().
Referenced by computeInfo(), and EmitVAArg().
ABIArgInfo DefaultABIInfo::classifyReturnType | ( | QualType | RetTy | ) | const |
Definition at line 46 of file ABIInfoImpl.cpp.
References clang::Type::getAs(), clang::CodeGen::ABIInfo::getContext(), clang::CodeGen::ABIArgInfo::getDirect(), clang::CodeGen::ABIArgInfo::getExtend(), clang::CodeGen::ABIArgInfo::getIgnore(), clang::CodeGen::ABIInfo::getNaturalAlignIndirect(), clang::CodeGen::isAggregateTypeForABI(), clang::CodeGen::ABIInfo::isPromotableIntegerTypeForABI(), and clang::Type::isVoidType().
Referenced by computeInfo().
|
overridevirtual |
Implements clang::CodeGen::ABIInfo.
Definition at line 68 of file ABIInfoImpl.cpp.
References clang::CodeGen::CGFunctionInfo::arguments(), classifyArgumentType(), classifyReturnType(), clang::CodeGen::ABIInfo::getCXXABI(), clang::CodeGen::CGFunctionInfo::getReturnInfo(), and clang::CodeGen::CGFunctionInfo::getReturnType().
|
overridevirtual |
EmitVAArg - Emit the target dependent code to load a value of.
Implements clang::CodeGen::ABIInfo.
Definition at line 75 of file ABIInfoImpl.cpp.
References classifyArgumentType(), clang::CodeGen::CodeGenFunction::EmitLoadOfAnyValue(), clang::CodeGen::EmitVAArgInstr(), and clang::CodeGen::CodeGenFunction::MakeAddrLValue().