clang
8.0.0
|
ABIInfo - Target specific hooks for defining how a type should be passed or returned from functions. More...
#include "/work/www-prereleases/8.0.0/rc1/builddocs/llvm.src/tools/clang/lib/CodeGen/ABIInfo.h"
Public Member Functions | |
ABIInfo (CodeGen::CodeGenTypes &cgt) | |
virtual | ~ABIInfo () |
virtual bool | supportsSwift () 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. More... | |
virtual void | computeInfo (CodeGen::CGFunctionInfo &FI) const =0 |
virtual CodeGen::Address | EmitVAArg (CodeGen::CodeGenFunction &CGF, CodeGen::Address VAListAddr, QualType Ty) const =0 |
EmitVAArg - Emit the target dependent code to load a value of. More... | |
bool | isAndroid () const |
virtual CodeGen::Address | EmitMSVAArg (CodeGen::CodeGenFunction &CGF, CodeGen::Address VAListAddr, QualType Ty) const |
Emit the target dependent code to load a value of. More... | |
virtual bool | isHomogeneousAggregateBaseType (QualType Ty) const |
virtual bool | isHomogeneousAggregateSmallEnough (const Type *Base, uint64_t Members) const |
bool | isHomogeneousAggregate (QualType Ty, const Type *&Base, uint64_t &Members) const |
isHomogeneousAggregate - Return true if a type is an ELFv2 homogeneous aggregate. More... | |
CodeGen::ABIArgInfo | getNaturalAlignIndirect (QualType Ty, bool ByRef=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. More... | |
CodeGen::ABIArgInfo | getNaturalAlignIndirectInReg (QualType Ty, bool Realign=false) const |
Public Attributes | |
CodeGen::CodeGenTypes & | CGT |
Protected Attributes | |
llvm::CallingConv::ID | RuntimeCC |
ABIInfo - Target specific hooks for defining how a type should be passed or returned from functions.
|
inline |
|
virtual |
Definition at line 98 of file TargetInfo.cpp.
|
pure virtual |
Referenced by clang::CodeGen::CodeGenTypes::arrangeLLVMFunctionInfo(), and getTypeString().
|
virtual |
Emit the target dependent code to load a value of.
__builtin_ms_va_list
pointed to by Definition at line 93 of file TargetInfo.cpp.
References clang::CodeGen::Address::invalid().
|
pure virtual |
EmitVAArg - Emit the target dependent code to load a value of.
Referenced by EmitX86_64VAArgFromMemory(), and getTypeString().
const CodeGenOptions & ABIInfo::getCodeGenOpts | ( | ) | const |
Definition at line 206 of file TargetInfo.cpp.
References CGT, and clang::CodeGen::CodeGenTypes::getCodeGenOpts().
ASTContext & ABIInfo::getContext | ( | ) | const |
Definition at line 190 of file TargetInfo.cpp.
References CGT, and clang::CodeGen::CodeGenTypes::getContext().
Referenced by addBaseAndFieldSizes(), ContainsFloatAtOffset(), EmitX86_64VAArgFromMemory(), getNaturalAlignIndirect(), getNaturalAlignIndirectInReg(), getTypeString(), GetX86_64ByValArgumentPair(), isArgInAlloca(), isHomogeneousAggregate(), and isRecordWithSSEVectorType().
CGCXXABI & ABIInfo::getCXXABI | ( | ) | const |
Definition at line 186 of file TargetInfo.cpp.
References CGT, and clang::CodeGen::CodeGenTypes::getCXXABI().
Referenced by EmitX86_64VAArgFromMemory(), getTypeString(), GetX86_64ByValArgumentPair(), isHomogeneousAggregate(), and isRecordWithSSEVectorType().
const llvm::DataLayout & ABIInfo::getDataLayout | ( | ) | const |
Definition at line 198 of file TargetInfo.cpp.
References CGT, and clang::CodeGen::CodeGenTypes::getDataLayout().
Referenced by ContainsFloatAtOffset(), EmitX86_64VAArgFromMemory(), and GetX86_64ByValArgumentPair().
ABIArgInfo ABIInfo::getNaturalAlignIndirect | ( | QualType | Ty, |
bool | ByRef = 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 81 of file TargetInfo.cpp.
References getContext(), and clang::CodeGen::ABIArgInfo::getIndirect().
Referenced by addBaseAndFieldSizes(), classifyReturnType(), EmitX86_64VAArgFromMemory(), getTypeString(), isHomogeneousAggregate(), and isRecordWithSSEVectorType().
ABIArgInfo ABIInfo::getNaturalAlignIndirectInReg | ( | QualType | Ty, |
bool | Realign = false |
||
) | const |
Definition at line 88 of file TargetInfo.cpp.
References getContext(), and clang::CodeGen::ABIArgInfo::getIndirectInReg().
Referenced by addBaseAndFieldSizes(), and isRecordWithSSEVectorType().
|
inline |
const TargetInfo & ABIInfo::getTarget | ( | ) | const |
Definition at line 202 of file TargetInfo.cpp.
References CGT, and clang::CodeGen::CodeGenTypes::getTarget().
Referenced by EmitX86_64VAArgFromMemory(), clang::CodeGen::CodeGenModule::getTargetCodeGenInfo(), and isAndroid().
llvm::LLVMContext & ABIInfo::getVMContext | ( | ) | const |
Definition at line 194 of file TargetInfo.cpp.
References CGT, and clang::CodeGen::CodeGenTypes::getLLVMContext().
Referenced by addBaseAndFieldSizes(), ContainsFloatAtOffset(), EmitX86_64VAArgFromMemory(), getTypeString(), GetX86_64ByValArgumentPair(), isArgInAlloca(), isHomogeneousAggregate(), and isRecordWithSSEVectorType().
bool ABIInfo::isAndroid | ( | ) | const |
Definition at line 210 of file TargetInfo.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 4549 of file TargetInfo.cpp.
References clang::CodeGen::Base, clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, CGT, clang::CodeGen::swiftcall::classifyArgumentType(), classifyReturnType(), clang::CodeGen::CodeGenTypes::ConvertType(), clang::CodeGen::CodeGenFunction::ConvertTypeForMem(), clang::frontend::CPlusPlus, clang::CodeGen::CGBuilderTy::CreateConstInBoundsByteGEP(), clang::CodeGen::CGBuilderTy::CreateElementBitCast(), clang::CodeGen::CGBuilderTy::CreateLoad(), clang::CodeGen::CodeGenFunction::CreateMemTemp(), clang::CodeGen::CodeGenFunction::EmitStoreOfComplex(), emitVoidPtrDirectVAArg(), emitVoidPtrVAArg(), clang::RecordDecl::fields(), clang::CharUnits::fromQuantity(), clang::Type::getAs(), getContext(), getCXXABI(), clang::CodeGen::CodeGenModule::getDataLayout(), clang::CodeGen::ABIArgInfo::getDirect(), clang::CodeGen::ABIArgInfo::getExtend(), clang::CodeGen::ABIArgInfo::getIgnore(), clang::CodeGen::ABIArgInfo::getIndirect(), getNaturalAlignIndirect(), clang::CharUnits::getQuantity(), getRecordArgABI(), clang::ASTContext::getTargetInfo(), clang::ASTContext::getTypeAlignInChars(), clang::ASTContext::getTypeInfoInChars(), clang::QualType::getTypePtr(), clang::ASTContext::getTypeSize(), clang::ASTContext::getVectorType(), getVMContext(), clang::RecordDecl::hasFlexibleArrayMember(), clang::TargetInfo::hasFloat128Type(), clang::CodeGen::CodeGenTypeCache::Int8Ty, isAggregateTypeForABI(), clang::Type::isAnyComplexType(), isEmptyRecord(), clang::Type::isFloat128Type(), isHomogeneousAggregateBaseType(), isHomogeneousAggregateSmallEnough(), clang::TagDecl::isUnion(), clang::Type::isVectorType(), clang::Type::isVoidType(), clang::CodeGen::CodeGenFunction::MakeAddrLValue(), max(), clang::CodeGen::CGCXXABI::RAA_DirectInMemory, clang::CodeGen::Type, and useFirstFieldIfTransparentUnion().
Referenced by addBaseAndFieldSizes(), EmitX86_64VAArgFromMemory(), and isRecordWithSSEVectorType().
Definition at line 212 of file TargetInfo.cpp.
Referenced by isHomogeneousAggregate().
|
virtual |
Definition at line 216 of file TargetInfo.cpp.
Referenced by isHomogeneousAggregate().
|
inlinevirtual |
Reimplemented in clang::CodeGen::SwiftABIInfo.
Definition at line 62 of file ABIInfo.h.
Referenced by clang::CodeGen::SwiftABIInfo::classof().
CodeGen::CodeGenTypes& clang::CodeGen::ABIInfo::CGT |
Definition at line 53 of file ABIInfo.h.
Referenced by addBaseAndFieldSizes(), EmitX86_64VAArgFromMemory(), getCodeGenOpts(), getContext(), getCXXABI(), getDataLayout(), getTarget(), getTypeString(), getVMContext(), GetX86_64ByValArgumentPair(), isHomogeneousAggregate(), and isRecordWithSSEVectorType().
|
protected |