clang
6.0.0
|
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, 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) |
static ABIArgInfo | getDirectInReg (llvm::Type *T=nullptr) |
static ABIArgInfo | getExtend (llvm::Type *T=nullptr) |
static ABIArgInfo | getExtendInReg (llvm::Type *T=nullptr) |
static ABIArgInfo | getIgnore () |
static ABIArgInfo | getIndirect (CharUnits Alignment, bool ByVal=true, bool Realign=false, llvm::Type *Padding=nullptr) |
static ABIArgInfo | getIndirectInReg (CharUnits Alignment, bool ByVal=true, bool Realign=false) |
static ABIArgInfo | getInAlloca (unsigned FieldIndex) |
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 34 of file CGFunctionInfo.h.
enum clang::CodeGen::ABIArgInfo::Kind : uint8_t |
Definition at line 36 of file CGFunctionInfo.h.
|
inline |
Definition at line 117 of file CGFunctionInfo.h.
Referenced by getCoerceAndExpand(), getDirect(), getExpand(), getExtend(), getIgnore(), getInAlloca(), and getIndirect().
|
inline |
Definition at line 243 of file CGFunctionInfo.h.
References isCoerceAndExpand(), isDirect(), and isExtend().
Referenced by clang::CodeGen::CodeGenTypes::arrangeLLVMFunctionInfo(), getCoerceToType(), and setCoerceToType().
LLVM_DUMP_METHOD void ABIArgInfo::dump | ( | ) | const |
Definition at line 208 of file TargetInfo.cpp.
References clang::CodeGen::Type.
Referenced by setCanBeFlattened().
|
inline |
Definition at line 366 of file CGFunctionInfo.h.
References isDirect().
Referenced by 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 189 of file CGFunctionInfo.h.
References ABIArgInfo(), CoerceAndExpand, and isPaddingForCoerceAndExpand().
Referenced by classifyExpandedType().
|
inline |
Definition at line 278 of file CGFunctionInfo.h.
References isCoerceAndExpand().
|
inline |
Definition at line 288 of file CGFunctionInfo.h.
References isCoerceAndExpand(), and UnpaddedCoerceAndExpandType.
Referenced by clang::CodeGen::CodeGenTypes::GetFunctionType().
|
inline |
Definition at line 268 of file CGFunctionInfo.h.
References canHaveCoerceToType().
Referenced by clang::CodeGen::CodeGenTypes::arrangeLLVMFunctionInfo(), emitAddressAtOffset(), EmitX86_64VAArgFromMemory(), and clang::CodeGen::CodeGenTypes::GetFunctionType().
|
inlinestatic |
Definition at line 121 of file CGFunctionInfo.h.
References ABIArgInfo(), and Direct.
Referenced by addBaseAndFieldSizes(), classifyType(), EmitX86_64VAArgFromMemory(), getDirectInReg(), and GetX86_64ByValArgumentPair().
|
inlinestatic |
Definition at line 131 of file CGFunctionInfo.h.
References getDirect().
|
inline |
Definition at line 248 of file CGFunctionInfo.h.
References DirectOffset, isDirect(), and isExtend().
Referenced by emitAddressAtOffset().
|
inlinestatic |
Definition at line 173 of file CGFunctionInfo.h.
References ABIArgInfo(), and Expand.
Referenced by classifyType(), EmitX86_64VAArgFromMemory(), and getExpandWithPadding().
|
inlinestatic |
Definition at line 178 of file CGFunctionInfo.h.
References getExpand().
|
inlinestatic |
Definition at line 136 of file CGFunctionInfo.h.
References ABIArgInfo(), and Extend.
Referenced by addBaseAndFieldSizes(), EmitX86_64VAArgFromMemory(), getExtendInReg(), and GetX86_64ByValArgumentPair().
|
inlinestatic |
Definition at line 143 of file CGFunctionInfo.h.
References getExtend().
|
inlinestatic |
Definition at line 148 of file CGFunctionInfo.h.
References ABIArgInfo(), and Ignore.
Referenced by addBaseAndFieldSizes(), classifyExpandedType(), classifyType(), EmitX86_64VAArgFromMemory(), and GetX86_64ByValArgumentPair().
|
inlinestatic |
Definition at line 168 of file CGFunctionInfo.h.
References ABIArgInfo(), and InAlloca.
|
inline |
Definition at line 345 of file CGFunctionInfo.h.
References AllocaFieldIndex, and isInAlloca().
Referenced by clang::CodeGen::CodeGenFunction::StartFunction().
|
inline |
Return true if this field of an inalloca struct should be returned to implement a struct return calling convention.
Definition at line 356 of file CGFunctionInfo.h.
References isInAlloca().
Referenced by clang::CodeGen::CodeGenTypes::GetFunctionType().
|
inlinestatic |
Definition at line 151 of file CGFunctionInfo.h.
References ABIArgInfo(), and Indirect.
Referenced by classifyExpandedType(), classifyType(), EmitX86_64VAArgFromMemory(), getIndirectInReg(), clang::CodeGen::ABIInfo::getNaturalAlignIndirect(), and isDeletingDtor().
|
inline |
Definition at line 309 of file CGFunctionInfo.h.
References clang::CharUnits::fromQuantity(), IndirectAlign, and isIndirect().
Referenced by clang::CodeGen::CodeGenFunction::StartFunction().
|
inline |
Definition at line 318 of file CGFunctionInfo.h.
References isIndirect().
Referenced by isArgInAlloca().
|
inlinestatic |
Definition at line 162 of file CGFunctionInfo.h.
References getIndirect().
Referenced by clang::CodeGen::ABIInfo::getNaturalAlignIndirectInReg().
|
inline |
Definition at line 327 of file CGFunctionInfo.h.
References isIndirect().
|
inline |
Definition at line 298 of file CGFunctionInfo.h.
References isDirect(), isExtend(), and isIndirect().
Referenced by clang::CodeGen::CodeGenModule::ConstructAttributeList(), and isArgInAlloca().
|
inline |
Definition at line 234 of file CGFunctionInfo.h.
Referenced by clang::CodeGen::CodeGenModule::ConstructAttributeList(), emitAddressAtOffset(), clang::CodeGen::CodeGenFunction::EmitForwardingCallToLambda(), clang::CodeGen::CodeGenTypes::GetFunctionType(), isArgInAlloca(), similar(), and clang::CodeGen::CodeGenFunction::StartFunction().
|
inline |
Definition at line 261 of file CGFunctionInfo.h.
|
inline |
Definition at line 257 of file CGFunctionInfo.h.
References PaddingType.
Referenced by clang::CodeGen::CodeGenTypes::GetFunctionType().
|
inline |
Definition at line 283 of file CGFunctionInfo.h.
References isCoerceAndExpand(), and UnpaddedCoerceAndExpandType.
Referenced by clang::CodeGen::CodeGenTypes::GetFunctionType().
|
inline |
Definition at line 241 of file CGFunctionInfo.h.
References CoerceAndExpand.
Referenced by canHaveCoerceToType(), getCoerceAndExpandType(), getCoerceAndExpandTypeSequence(), and getUnpaddedCoerceAndExpandType().
|
inline |
Definition at line 235 of file CGFunctionInfo.h.
References Direct.
Referenced by canHaveCoerceToType(), clang::CodeGen::CodeGenFunction::EmitMustTailThunk(), EmitX86_64VAArgFromMemory(), getCanBeFlattened(), getDirectOffset(), clang::CodeGen::CodeGenTypes::GetFunctionType(), getInReg(), setCanBeFlattened(), setDirectOffset(), and setInReg().
|
inline |
Definition at line 240 of file CGFunctionInfo.h.
References Expand.
|
inline |
Definition at line 237 of file CGFunctionInfo.h.
References Extend.
Referenced by canHaveCoerceToType(), getDirectOffset(), getInReg(), setDirectOffset(), and setInReg().
|
inline |
Definition at line 238 of file CGFunctionInfo.h.
References Ignore.
|
inline |
Definition at line 236 of file CGFunctionInfo.h.
References InAlloca.
Referenced by getInAllocaFieldIndex(), getInAllocaSRet(), setInAllocaFieldIndex(), and setInAllocaSRet().
|
inline |
Definition at line 239 of file CGFunctionInfo.h.
References Indirect.
Referenced by clang::CodeGen::CodeGenFunction::EmitMustTailThunk(), getIndirectAlign(), getIndirectByVal(), getIndirectRealign(), getInReg(), isSRetAfterThis(), clang::CodeGen::CodeGenModule::ReturnTypeUsesSRet(), setIndirectAlign(), setIndirectByVal(), setIndirectRealign(), setInReg(), and setSRetAfterThis().
|
inlinestatic |
Definition at line 225 of file CGFunctionInfo.h.
Referenced by getCoerceAndExpand().
|
inline |
Definition at line 336 of file CGFunctionInfo.h.
References isIndirect().
Referenced by emitAddressAtOffset(), clang::CodeGen::CodeGenFunction::EmitMustTailThunk(), and clang::CodeGen::CodeGenFunction::StartFunction().
|
inline |
Definition at line 371 of file CGFunctionInfo.h.
References dump(), and isDirect().
|
inline |
Definition at line 273 of file CGFunctionInfo.h.
References canHaveCoerceToType(), and clang::T.
Referenced by clang::CodeGen::CodeGenTypes::arrangeLLVMFunctionInfo().
|
inline |
Definition at line 252 of file CGFunctionInfo.h.
References DirectOffset, isDirect(), and isExtend().
|
inline |
Definition at line 349 of file CGFunctionInfo.h.
References AllocaFieldIndex, and isInAlloca().
|
inline |
Definition at line 361 of file CGFunctionInfo.h.
References isInAlloca().
|
inline |
Definition at line 313 of file CGFunctionInfo.h.
References clang::CharUnits::getQuantity(), IndirectAlign, and isIndirect().
|
inline |
Definition at line 322 of file CGFunctionInfo.h.
References isIndirect().
|
inline |
Definition at line 331 of file CGFunctionInfo.h.
References isIndirect().
|
inline |
Definition at line 303 of file CGFunctionInfo.h.
References isDirect(), isExtend(), and isIndirect().
|
inline |
Definition at line 264 of file CGFunctionInfo.h.
|
inline |
Definition at line 340 of file CGFunctionInfo.h.
References isIndirect().
Referenced by isDeletingDtor().
unsigned clang::CodeGen::ABIArgInfo::AllocaFieldIndex |
Definition at line 88 of file CGFunctionInfo.h.
Referenced by getInAllocaFieldIndex(), and setInAllocaFieldIndex().
unsigned clang::CodeGen::ABIArgInfo::DirectOffset |
Definition at line 86 of file CGFunctionInfo.h.
Referenced by getDirectOffset(), and setDirectOffset().
unsigned clang::CodeGen::ABIArgInfo::IndirectAlign |
Definition at line 87 of file CGFunctionInfo.h.
Referenced by getIndirectAlign(), and setIndirectAlign().
llvm::Type* clang::CodeGen::ABIArgInfo::PaddingType |
Definition at line 82 of file CGFunctionInfo.h.
Referenced by getPaddingType().
llvm::Type* clang::CodeGen::ABIArgInfo::UnpaddedCoerceAndExpandType |
Definition at line 83 of file CGFunctionInfo.h.
Referenced by getCoerceAndExpandTypeSequence(), and getUnpaddedCoerceAndExpandType().