clang 20.0.0git
|
ABIArgInfo - Helper class to encapsulate information about how a specific C type should be passed to or returned from a function. More...
#include "clang/CodeGen/CGFunctionInfo.h"
Public Types | |
enum | Kind : uint8_t { Direct , Extend , Indirect , IndirectAliased , Ignore , Expand , CoerceAndExpand , InAlloca , KindFirst = Direct , KindLast = InAlloca } |
Static Public Member Functions | |
static ABIArgInfo | getDirect (llvm::Type *T=nullptr, unsigned Offset=0, llvm::Type *Padding=nullptr, bool CanBeFlattened=true, unsigned Align=0) |
static ABIArgInfo | getDirectInReg (llvm::Type *T=nullptr) |
static ABIArgInfo | getSignExtend (QualType Ty, llvm::Type *T=nullptr) |
static ABIArgInfo | getZeroExtend (QualType Ty, llvm::Type *T=nullptr) |
static ABIArgInfo | getExtend (QualType Ty, llvm::Type *T=nullptr) |
static ABIArgInfo | getExtendInReg (QualType Ty, llvm::Type *T=nullptr) |
static ABIArgInfo | getIgnore () |
static ABIArgInfo | getIndirect (CharUnits Alignment, bool ByVal=true, bool Realign=false, llvm::Type *Padding=nullptr) |
static ABIArgInfo | getIndirectAliased (CharUnits Alignment, unsigned AddrSpace, bool Realign=false, llvm::Type *Padding=nullptr) |
Pass this in memory using the IR byref attribute. | |
static ABIArgInfo | getIndirectInReg (CharUnits Alignment, bool ByVal=true, bool Realign=false) |
static ABIArgInfo | getInAlloca (unsigned FieldIndex, bool Indirect=false) |
static ABIArgInfo | getExpand () |
static ABIArgInfo | getExpandWithPadding (bool PaddingInReg, llvm::Type *Padding) |
static ABIArgInfo | getCoerceAndExpand (llvm::StructType *coerceToType, llvm::Type *unpaddedCoerceToType) |
static bool | isPaddingForCoerceAndExpand (llvm::Type *eltType) |
ABIArgInfo - Helper class to encapsulate information about how a specific C type should be passed to or returned from a function.
Definition at line 32 of file CGFunctionInfo.h.
enum clang::CodeGen::ABIArgInfo::Kind : uint8_t |
Definition at line 34 of file CGFunctionInfo.h.
Definition at line 135 of file CGFunctionInfo.h.
|
inline |
Definition at line 305 of file CGFunctionInfo.h.
References isCoerceAndExpand(), isDirect(), and isExtend().
Referenced by clang::CodeGen::CodeGenTypes::arrangeLLVMFunctionInfo(), DetermineNoUndef(), getCoerceToType(), and setCoerceToType().
LLVM_DUMP_METHOD void ABIArgInfo::dump | ( | ) | const |
Definition at line 29 of file TargetInfo.cpp.
References CoerceAndExpand, Direct, Expand, Extend, getCoerceAndExpandType(), getCoerceToType(), getInAllocaFieldIndex(), getIndirectAddrSpace(), getIndirectAlign(), getIndirectByVal(), getIndirectRealign(), clang::CharUnits::getQuantity(), Ignore, InAlloca, Indirect, and IndirectAliased.
|
inline |
Definition at line 465 of file CGFunctionInfo.h.
References isDirect().
Referenced by canApplyNoFPClass(), and clang::CodeGen::CodeGenTypes::GetFunctionType().
|
inlinestatic |
unpaddedCoerceToType | The coerce-to type with padding elements removed, canonicalized to a single element if it would otherwise have exactly one element. |
Definition at line 250 of file CGFunctionInfo.h.
References CoerceAndExpand, and isPaddingForCoerceAndExpand().
Referenced by classifyExpandedType().
|
inline |
Definition at line 358 of file CGFunctionInfo.h.
References isCoerceAndExpand().
Referenced by dump().
|
inline |
Definition at line 368 of file CGFunctionInfo.h.
References isCoerceAndExpand(), and UnpaddedCoerceAndExpandType.
Referenced by clang::CodeGen::CodeGenTypes::GetFunctionType().
|
inline |
Definition at line 348 of file CGFunctionInfo.h.
References canHaveCoerceToType().
Referenced by clang::CodeGen::CodeGenTypes::arrangeLLVMFunctionInfo(), canApplyNoFPClass(), DetermineNoUndef(), dump(), emitAddressAtOffset(), clang::CodeGen::EmitVAArgInstr(), and clang::CodeGen::CodeGenTypes::GetFunctionType().
|
inlinestatic |
Definition at line 142 of file CGFunctionInfo.h.
References Direct, and clang::T.
Referenced by clang::CodeGen::DefaultABIInfo::classifyArgumentType(), PNaClABIInfo::classifyArgumentType(), clang::CodeGen::DefaultABIInfo::classifyReturnType(), PNaClABIInfo::classifyReturnType(), classifyType(), clang::CodeGen::coerceToIntArray(), PNaClABIInfo::EmitVAArg(), and getDirectInReg().
|
inline |
Definition at line 319 of file CGFunctionInfo.h.
References DirectAttr, isDirect(), and isExtend().
Referenced by clang::CodeGen::CodeGenModule::ConstructAttributeList().
|
inlinestatic |
Definition at line 153 of file CGFunctionInfo.h.
References getDirect(), and clang::T.
|
inline |
Definition at line 310 of file CGFunctionInfo.h.
References DirectAttr, isDirect(), and isExtend().
Referenced by emitAddressAtOffset(), and clang::CodeGen::EmitVAArgInstr().
|
inlinestatic |
Definition at line 234 of file CGFunctionInfo.h.
References Expand.
Referenced by classifyType(), and getExpandWithPadding().
|
inlinestatic |
Definition at line 239 of file CGFunctionInfo.h.
References getExpand().
|
inlinestatic |
Definition at line 183 of file CGFunctionInfo.h.
References getSignExtend(), getZeroExtend(), clang::Type::hasSignedIntegerRepresentation(), clang::Type::isIntegralOrEnumerationType(), and clang::T.
Referenced by clang::CodeGen::DefaultABIInfo::classifyArgumentType(), PNaClABIInfo::classifyArgumentType(), clang::CodeGen::DefaultABIInfo::classifyReturnType(), PNaClABIInfo::classifyReturnType(), and getExtendInReg().
|
inlinestatic |
Definition at line 190 of file CGFunctionInfo.h.
References getExtend(), and clang::T.
|
inlinestatic |
Definition at line 195 of file CGFunctionInfo.h.
References Ignore.
Referenced by classifyExpandedType(), clang::CodeGen::DefaultABIInfo::classifyReturnType(), PNaClABIInfo::classifyReturnType(), and classifyType().
|
inlinestatic |
Definition at line 228 of file CGFunctionInfo.h.
|
inline |
Definition at line 435 of file CGFunctionInfo.h.
References AllocaFieldIndex, and isInAlloca().
Referenced by dump().
|
inline |
Definition at line 444 of file CGFunctionInfo.h.
References isInAlloca().
|
inline |
Return true if this field of an inalloca struct should be returned to implement a struct return calling convention.
Definition at line 455 of file CGFunctionInfo.h.
References isInAlloca().
Referenced by clang::CodeGen::CodeGenTypes::GetFunctionType().
|
inlinestatic |
Definition at line 198 of file CGFunctionInfo.h.
References Indirect.
Referenced by classifyExpandedType(), classifyType(), getIndirectInReg(), and clang::CodeGen::ABIInfo::getNaturalAlignIndirect().
|
inline |
Definition at line 407 of file CGFunctionInfo.h.
References IndirectAttr, and isIndirectAliased().
Referenced by dump(), and clang::CodeGen::CodeGenTypes::GetFunctionType().
|
inlinestatic |
Pass this in memory using the IR byref attribute.
Definition at line 211 of file CGFunctionInfo.h.
References IndirectAliased.
|
inline |
Definition at line 389 of file CGFunctionInfo.h.
References clang::CharUnits::fromQuantity(), IndirectAttr, isIndirect(), and isIndirectAliased().
Referenced by clang::CodeGen::CodeGenModule::ConstructAttributeList(), and dump().
|
inline |
Definition at line 398 of file CGFunctionInfo.h.
References isIndirect().
Referenced by clang::CodeGen::CodeGenModule::ConstructAttributeList(), and dump().
|
inlinestatic |
Definition at line 222 of file CGFunctionInfo.h.
References getIndirect().
Referenced by clang::CodeGen::ABIInfo::getNaturalAlignIndirectInReg().
|
inline |
Definition at line 417 of file CGFunctionInfo.h.
References isIndirect(), and isIndirectAliased().
Referenced by dump(), and clang::CodeGen::EmitVAArgInstr().
|
inline |
Definition at line 378 of file CGFunctionInfo.h.
References isDirect(), isExtend(), and isIndirect().
Referenced by clang::CodeGen::CodeGenModule::ConstructAttributeList(), clang::CodeGen::EmitVAArgInstr(), isArgInAlloca(), and clang::CodeGen::CodeGenModule::ReturnTypeHasInReg().
|
inline |
Definition at line 295 of file CGFunctionInfo.h.
Referenced by clang::CodeGen::CodeGenModule::ConstructAttributeList(), DetermineNoUndef(), clang::CodeGen::CodeGenTypes::GetFunctionType(), isArgInAlloca(), and similar().
|
inline |
Definition at line 341 of file CGFunctionInfo.h.
Referenced by clang::CodeGen::CodeGenModule::ConstructAttributeList().
|
inline |
Definition at line 337 of file CGFunctionInfo.h.
References PaddingType.
Referenced by clang::CodeGen::EmitVAArgInstr(), and clang::CodeGen::CodeGenTypes::GetFunctionType().
|
inlinestatic |
Definition at line 159 of file CGFunctionInfo.h.
References Extend, clang::Type::isIntegralOrEnumerationType(), and clang::T.
Referenced by getExtend().
|
inline |
Definition at line 363 of file CGFunctionInfo.h.
References isCoerceAndExpand(), and UnpaddedCoerceAndExpandType.
Referenced by clang::CodeGen::CodeGenTypes::GetFunctionType().
|
inlinestatic |
Definition at line 170 of file CGFunctionInfo.h.
References Extend, clang::Type::isIntegralOrEnumerationType(), and clang::T.
Referenced by getExtend().
|
inline |
Definition at line 303 of file CGFunctionInfo.h.
References CoerceAndExpand.
Referenced by canHaveCoerceToType(), getCoerceAndExpandType(), getCoerceAndExpandTypeSequence(), and getUnpaddedCoerceAndExpandType().
|
inline |
Definition at line 296 of file CGFunctionInfo.h.
References Direct.
Referenced by canHaveCoerceToType(), clang::CodeGen::EmitVAArgInstr(), getCanBeFlattened(), getDirectAlign(), getDirectOffset(), clang::CodeGen::CodeGenTypes::GetFunctionType(), getInReg(), setCanBeFlattened(), setDirectAlign(), setDirectOffset(), and setInReg().
|
inline |
Definition at line 302 of file CGFunctionInfo.h.
References Expand.
|
inline |
Definition at line 298 of file CGFunctionInfo.h.
References Extend.
Referenced by canHaveCoerceToType(), clang::CodeGen::EmitVAArgInstr(), getDirectAlign(), getDirectOffset(), getInReg(), isSignExt(), setDirectAlign(), setDirectOffset(), setInReg(), and setSignExt().
|
inline |
Definition at line 299 of file CGFunctionInfo.h.
References Ignore.
|
inline |
Definition at line 297 of file CGFunctionInfo.h.
References InAlloca.
Referenced by getInAllocaFieldIndex(), getInAllocaIndirect(), getInAllocaSRet(), setInAllocaFieldIndex(), setInAllocaIndirect(), and setInAllocaSRet().
|
inline |
Definition at line 300 of file CGFunctionInfo.h.
References Indirect.
Referenced by clang::CodeGen::EmitVAArgInstr(), getIndirectAlign(), getIndirectByVal(), getIndirectRealign(), getInReg(), isSRetAfterThis(), clang::CodeGen::CodeGenModule::ReturnTypeUsesSRet(), setIndirectAlign(), setIndirectByVal(), setIndirectRealign(), setInReg(), and setSRetAfterThis().
|
inline |
Definition at line 301 of file CGFunctionInfo.h.
References IndirectAliased.
Referenced by getIndirectAddrSpace(), getIndirectAlign(), getIndirectRealign(), setIndirectAddrSpace(), setIndirectAlign(), and setIndirectRealign().
|
inlinestatic |
Definition at line 286 of file CGFunctionInfo.h.
Referenced by getCoerceAndExpand().
|
inline |
Definition at line 328 of file CGFunctionInfo.h.
References isExtend().
Referenced by clang::CodeGen::CodeGenModule::ConstructAttributeList().
|
inline |
Definition at line 426 of file CGFunctionInfo.h.
References isIndirect().
|
inline |
Definition at line 470 of file CGFunctionInfo.h.
References isDirect().
|
inline |
Definition at line 353 of file CGFunctionInfo.h.
References canHaveCoerceToType(), and clang::T.
Referenced by clang::CodeGen::CodeGenTypes::arrangeLLVMFunctionInfo().
|
inline |
Definition at line 323 of file CGFunctionInfo.h.
References DirectAttr, isDirect(), and isExtend().
|
inline |
Definition at line 314 of file CGFunctionInfo.h.
References DirectAttr, isDirect(), and isExtend().
|
inline |
Definition at line 439 of file CGFunctionInfo.h.
References AllocaFieldIndex, and isInAlloca().
|
inline |
Definition at line 448 of file CGFunctionInfo.h.
References Indirect, and isInAlloca().
|
inline |
Definition at line 460 of file CGFunctionInfo.h.
References isInAlloca().
|
inline |
Definition at line 412 of file CGFunctionInfo.h.
References IndirectAttr, and isIndirectAliased().
|
inline |
Definition at line 393 of file CGFunctionInfo.h.
References clang::CharUnits::getQuantity(), IndirectAttr, isIndirect(), and isIndirectAliased().
|
inline |
Definition at line 402 of file CGFunctionInfo.h.
References isIndirect().
|
inline |
Definition at line 421 of file CGFunctionInfo.h.
References isIndirect(), and isIndirectAliased().
|
inline |
Definition at line 383 of file CGFunctionInfo.h.
References isDirect(), isExtend(), and isIndirect().
|
inline |
Definition at line 344 of file CGFunctionInfo.h.
|
inline |
Definition at line 332 of file CGFunctionInfo.h.
References isExtend().
|
inline |
Definition at line 430 of file CGFunctionInfo.h.
References isIndirect().
unsigned clang::CodeGen::ABIArgInfo::AllocaFieldIndex |
Definition at line 107 of file CGFunctionInfo.h.
Referenced by getInAllocaFieldIndex(), and setInAllocaFieldIndex().
DirectAttrInfo clang::CodeGen::ABIArgInfo::DirectAttr |
Definition at line 105 of file CGFunctionInfo.h.
Referenced by getDirectAlign(), getDirectOffset(), setDirectAlign(), and setDirectOffset().
IndirectAttrInfo clang::CodeGen::ABIArgInfo::IndirectAttr |
Definition at line 106 of file CGFunctionInfo.h.
Referenced by getIndirectAddrSpace(), getIndirectAlign(), setIndirectAddrSpace(), and setIndirectAlign().
llvm::Type* clang::CodeGen::ABIArgInfo::PaddingType |
Definition at line 93 of file CGFunctionInfo.h.
Referenced by getPaddingType().
llvm::Type* clang::CodeGen::ABIArgInfo::UnpaddedCoerceAndExpandType |
Definition at line 94 of file CGFunctionInfo.h.
Referenced by getCoerceAndExpandTypeSequence(), and getUnpaddedCoerceAndExpandType().