class ABIArgInfo
Declaration
class ABIArgInfo { /* full declaration omitted */ };
Description
ABIArgInfo - Helper class to encapsulate information about how a specific C type should be passed to or returned from a function.
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:32
Member Variables
- private llvm::Type* TypeData
- private anonymous struct / union
- private anonymous struct / union
- private clang::CodeGen::ABIArgInfo::Kind TheKind
- private bool PaddingInReg
- private bool InAllocaSRet
- private bool InAllocaIndirect
- private bool IndirectByVal
- private bool IndirectRealign
- private bool SRetAfterThis
- private bool InReg
- private bool CanBeFlattened
- private bool SignExt
Method Overview
- public ABIArgInfo(clang::CodeGen::ABIArgInfo::Kind K = Direct)
- public bool canHaveCoerceToType() const
- private bool canHavePaddingType() const
- public void dump() const
- public bool getCanBeFlattened() const
- public static clang::CodeGen::ABIArgInfo getCoerceAndExpand(llvm::StructType * coerceToType, llvm::Type * unpaddedCoerceToType)
- public llvm::StructType * getCoerceAndExpandType() const
- public ArrayRef<llvm::Type *> getCoerceAndExpandTypeSequence() const
- public llvm::Type * getCoerceToType() const
- public static clang::CodeGen::ABIArgInfo getDirect(llvm::Type * T = nullptr, unsigned int Offset = 0, llvm::Type * Padding = nullptr, bool CanBeFlattened = true, unsigned int Align = 0)
- public unsigned int getDirectAlign() const
- public static clang::CodeGen::ABIArgInfo getDirectInReg(llvm::Type * T = nullptr)
- public unsigned int getDirectOffset() const
- public static clang::CodeGen::ABIArgInfo getExpand()
- public static clang::CodeGen::ABIArgInfo getExpandWithPadding(bool PaddingInReg, llvm::Type * Padding)
- public static clang::CodeGen::ABIArgInfo getExtend(clang::QualType Ty, llvm::Type * T = nullptr)
- public static clang::CodeGen::ABIArgInfo getExtendInReg(clang::QualType Ty, llvm::Type * T = nullptr)
- public static clang::CodeGen::ABIArgInfo getIgnore()
- public static clang::CodeGen::ABIArgInfo getInAlloca(unsigned int FieldIndex, bool Indirect = false)
- public unsigned int getInAllocaFieldIndex() const
- public unsigned int getInAllocaIndirect() const
- public bool getInAllocaSRet() const
- public bool getInReg() const
- public static clang::CodeGen::ABIArgInfo getIndirect(clang::CharUnits Alignment, bool ByVal = true, bool Realign = false, llvm::Type * Padding = nullptr)
- public unsigned int getIndirectAddrSpace() const
- public static clang::CodeGen::ABIArgInfo getIndirectAliased(clang::CharUnits Alignment, unsigned int AddrSpace, bool Realign = false, llvm::Type * Padding = nullptr)
- public clang::CharUnits getIndirectAlign() const
- public bool getIndirectByVal() const
- public static clang::CodeGen::ABIArgInfo getIndirectInReg(clang::CharUnits Alignment, bool ByVal = true, bool Realign = false)
- public bool getIndirectRealign() const
- public clang::CodeGen::ABIArgInfo::Kind getKind() const
- public bool getPaddingInReg() const
- public llvm::Type * getPaddingType() const
- public static clang::CodeGen::ABIArgInfo getSignExtend(clang::QualType Ty, llvm::Type * T = nullptr)
- public llvm::Type * getUnpaddedCoerceAndExpandType() const
- public static clang::CodeGen::ABIArgInfo getZeroExtend(clang::QualType Ty, llvm::Type * T = nullptr)
- public bool isCoerceAndExpand() const
- public bool isDirect() const
- public bool isExpand() const
- public bool isExtend() const
- public bool isIgnore() const
- public bool isInAlloca() const
- public bool isIndirect() const
- public bool isIndirectAliased() const
- public static bool isPaddingForCoerceAndExpand(llvm::Type * eltType)
- public bool isSRetAfterThis() const
- public bool isSignExt() const
- public void setCanBeFlattened(bool Flatten)
- public void setCoerceToType(llvm::Type * T)
- public void setDirectAlign(unsigned int Align)
- public void setDirectOffset(unsigned int Offset)
- public void setInAllocaFieldIndex(unsigned int FieldIndex)
- public void setInAllocaIndirect(bool Indirect)
- public void setInAllocaSRet(bool SRet)
- public void setInReg(bool IR)
- public void setIndirectAddrSpace(unsigned int AddrSpace)
- public void setIndirectAlign(clang::CharUnits IA)
- public void setIndirectByVal(bool IBV)
- public void setIndirectRealign(bool IR)
- public void setPaddingInReg(bool PIR)
- private void setPaddingType(llvm::Type * T)
- public void setSRetAfterThis(bool AfterThis)
- public void setSignExt(bool SExt)
- private void setUnpaddedCoerceToType(llvm::Type * T)
Methods
¶ABIArgInfo(
clang::CodeGen::ABIArgInfo::Kind K = Direct)
ABIArgInfo(
clang::CodeGen::ABIArgInfo::Kind K = Direct)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:135
Parameters
- clang::CodeGen::ABIArgInfo::Kind K = Direct
¶bool canHaveCoerceToType() const
bool canHaveCoerceToType() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:305
¶bool canHavePaddingType() const
bool canHavePaddingType() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:120
¶void dump() const
void dump() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:475
¶bool getCanBeFlattened() const
bool getCanBeFlattened() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:465
¶static clang::CodeGen::ABIArgInfo
getCoerceAndExpand(
llvm::StructType* coerceToType,
llvm::Type* unpaddedCoerceToType)
static clang::CodeGen::ABIArgInfo
getCoerceAndExpand(
llvm::StructType* coerceToType,
llvm::Type* unpaddedCoerceToType)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:250
Parameters
- llvm::StructType* coerceToType
- llvm::Type* unpaddedCoerceToType
- The coerce-to type with padding elements removed, canonicalized to a single element if it would otherwise have exactly one element.
¶llvm::StructType* getCoerceAndExpandType() const
llvm::StructType* getCoerceAndExpandType() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:358
¶ArrayRef<llvm::Type*>
getCoerceAndExpandTypeSequence() const
ArrayRef<llvm::Type*>
getCoerceAndExpandTypeSequence() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:368
¶llvm::Type* getCoerceToType() const
llvm::Type* getCoerceToType() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:348
¶static clang::CodeGen::ABIArgInfo getDirect(
llvm::Type* T = nullptr,
unsigned int Offset = 0,
llvm::Type* Padding = nullptr,
bool CanBeFlattened = true,
unsigned int Align = 0)
static clang::CodeGen::ABIArgInfo getDirect(
llvm::Type* T = nullptr,
unsigned int Offset = 0,
llvm::Type* Padding = nullptr,
bool CanBeFlattened = true,
unsigned int Align = 0)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:142
Parameters
- llvm::Type* T = nullptr
- unsigned int Offset = 0
- llvm::Type* Padding = nullptr
- bool CanBeFlattened = true
- unsigned int Align = 0
¶unsigned int getDirectAlign() const
unsigned int getDirectAlign() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:319
¶static clang::CodeGen::ABIArgInfo getDirectInReg(
llvm::Type* T = nullptr)
static clang::CodeGen::ABIArgInfo getDirectInReg(
llvm::Type* T = nullptr)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:153
Parameters
- llvm::Type* T = nullptr
¶unsigned int getDirectOffset() const
unsigned int getDirectOffset() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:310
¶static clang::CodeGen::ABIArgInfo getExpand()
static clang::CodeGen::ABIArgInfo getExpand()
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:234
¶static clang::CodeGen::ABIArgInfo
getExpandWithPadding(bool PaddingInReg,
llvm::Type* Padding)
static clang::CodeGen::ABIArgInfo
getExpandWithPadding(bool PaddingInReg,
llvm::Type* Padding)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:239
Parameters
- bool PaddingInReg
- llvm::Type* Padding
¶static clang::CodeGen::ABIArgInfo getExtend(
clang::QualType Ty,
llvm::Type* T = nullptr)
static clang::CodeGen::ABIArgInfo getExtend(
clang::QualType Ty,
llvm::Type* T = nullptr)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:183
Parameters
- clang::QualType Ty
- llvm::Type* T = nullptr
¶static clang::CodeGen::ABIArgInfo getExtendInReg(
clang::QualType Ty,
llvm::Type* T = nullptr)
static clang::CodeGen::ABIArgInfo getExtendInReg(
clang::QualType Ty,
llvm::Type* T = nullptr)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:190
Parameters
- clang::QualType Ty
- llvm::Type* T = nullptr
¶static clang::CodeGen::ABIArgInfo getIgnore()
static clang::CodeGen::ABIArgInfo getIgnore()
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:195
¶static clang::CodeGen::ABIArgInfo getInAlloca(
unsigned int FieldIndex,
bool Indirect = false)
static clang::CodeGen::ABIArgInfo getInAlloca(
unsigned int FieldIndex,
bool Indirect = false)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:228
Parameters
- unsigned int FieldIndex
- bool Indirect = false
¶unsigned int getInAllocaFieldIndex() const
unsigned int getInAllocaFieldIndex() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:435
¶unsigned int getInAllocaIndirect() const
unsigned int getInAllocaIndirect() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:444
¶bool getInAllocaSRet() const
bool getInAllocaSRet() const
Description
Return true if this field of an inalloca struct should be returned to implement a struct return calling convention.
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:455
¶bool getInReg() const
bool getInReg() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:378
¶static clang::CodeGen::ABIArgInfo getIndirect(
clang::CharUnits Alignment,
bool ByVal = true,
bool Realign = false,
llvm::Type* Padding = nullptr)
static clang::CodeGen::ABIArgInfo getIndirect(
clang::CharUnits Alignment,
bool ByVal = true,
bool Realign = false,
llvm::Type* Padding = nullptr)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:198
Parameters
- clang::CharUnits Alignment
- bool ByVal = true
- bool Realign = false
- llvm::Type* Padding = nullptr
¶unsigned int getIndirectAddrSpace() const
unsigned int getIndirectAddrSpace() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:407
¶static clang::CodeGen::ABIArgInfo
getIndirectAliased(clang::CharUnits Alignment,
unsigned int AddrSpace,
bool Realign = false,
llvm::Type* Padding = nullptr)
static clang::CodeGen::ABIArgInfo
getIndirectAliased(clang::CharUnits Alignment,
unsigned int AddrSpace,
bool Realign = false,
llvm::Type* Padding = nullptr)
Description
Pass this in memory using the IR byref attribute.
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:211
Parameters
- clang::CharUnits Alignment
- unsigned int AddrSpace
- bool Realign = false
- llvm::Type* Padding = nullptr
¶clang::CharUnits getIndirectAlign() const
clang::CharUnits getIndirectAlign() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:389
¶bool getIndirectByVal() const
bool getIndirectByVal() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:398
¶static clang::CodeGen::ABIArgInfo
getIndirectInReg(clang::CharUnits Alignment,
bool ByVal = true,
bool Realign = false)
static clang::CodeGen::ABIArgInfo
getIndirectInReg(clang::CharUnits Alignment,
bool ByVal = true,
bool Realign = false)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:222
Parameters
- clang::CharUnits Alignment
- bool ByVal = true
- bool Realign = false
¶bool getIndirectRealign() const
bool getIndirectRealign() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:417
¶clang::CodeGen::ABIArgInfo::Kind getKind() const
clang::CodeGen::ABIArgInfo::Kind getKind() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:295
¶bool getPaddingInReg() const
bool getPaddingInReg() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:341
¶llvm::Type* getPaddingType() const
llvm::Type* getPaddingType() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:337
¶static clang::CodeGen::ABIArgInfo getSignExtend(
clang::QualType Ty,
llvm::Type* T = nullptr)
static clang::CodeGen::ABIArgInfo getSignExtend(
clang::QualType Ty,
llvm::Type* T = nullptr)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:159
Parameters
- clang::QualType Ty
- llvm::Type* T = nullptr
¶llvm::Type* getUnpaddedCoerceAndExpandType() const
llvm::Type* getUnpaddedCoerceAndExpandType() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:363
¶static clang::CodeGen::ABIArgInfo getZeroExtend(
clang::QualType Ty,
llvm::Type* T = nullptr)
static clang::CodeGen::ABIArgInfo getZeroExtend(
clang::QualType Ty,
llvm::Type* T = nullptr)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:170
Parameters
- clang::QualType Ty
- llvm::Type* T = nullptr
¶bool isCoerceAndExpand() const
bool isCoerceAndExpand() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:303
¶bool isDirect() const
bool isDirect() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:296
¶bool isExpand() const
bool isExpand() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:302
¶bool isExtend() const
bool isExtend() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:298
¶bool isIgnore() const
bool isIgnore() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:299
¶bool isInAlloca() const
bool isInAlloca() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:297
¶bool isIndirect() const
bool isIndirect() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:300
¶bool isIndirectAliased() const
bool isIndirectAliased() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:301
¶static bool isPaddingForCoerceAndExpand(
llvm::Type* eltType)
static bool isPaddingForCoerceAndExpand(
llvm::Type* eltType)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:286
Parameters
- llvm::Type* eltType
¶bool isSRetAfterThis() const
bool isSRetAfterThis() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:426
¶bool isSignExt() const
bool isSignExt() const
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:328
¶void setCanBeFlattened(bool Flatten)
void setCanBeFlattened(bool Flatten)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:470
Parameters
- bool Flatten
¶void setCoerceToType(llvm::Type* T)
void setCoerceToType(llvm::Type* T)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:353
Parameters
- llvm::Type* T
¶void setDirectAlign(unsigned int Align)
void setDirectAlign(unsigned int Align)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:323
Parameters
- unsigned int Align
¶void setDirectOffset(unsigned int Offset)
void setDirectOffset(unsigned int Offset)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:314
Parameters
- unsigned int Offset
¶void setInAllocaFieldIndex(
unsigned int FieldIndex)
void setInAllocaFieldIndex(
unsigned int FieldIndex)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:439
Parameters
- unsigned int FieldIndex
¶void setInAllocaIndirect(bool Indirect)
void setInAllocaIndirect(bool Indirect)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:448
Parameters
- bool Indirect
¶void setInAllocaSRet(bool SRet)
void setInAllocaSRet(bool SRet)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:460
Parameters
- bool SRet
¶void setInReg(bool IR)
void setInReg(bool IR)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:383
Parameters
- bool IR
¶void setIndirectAddrSpace(unsigned int AddrSpace)
void setIndirectAddrSpace(unsigned int AddrSpace)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:412
Parameters
- unsigned int AddrSpace
¶void setIndirectAlign(clang::CharUnits IA)
void setIndirectAlign(clang::CharUnits IA)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:393
Parameters
¶void setIndirectByVal(bool IBV)
void setIndirectByVal(bool IBV)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:402
Parameters
- bool IBV
¶void setIndirectRealign(bool IR)
void setIndirectRealign(bool IR)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:421
Parameters
- bool IR
¶void setPaddingInReg(bool PIR)
void setPaddingInReg(bool PIR)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:344
Parameters
- bool PIR
¶void setPaddingType(llvm::Type* T)
void setPaddingType(llvm::Type* T)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:124
Parameters
- llvm::Type* T
¶void setSRetAfterThis(bool AfterThis)
void setSRetAfterThis(bool AfterThis)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:430
Parameters
- bool AfterThis
¶void setSignExt(bool SExt)
void setSignExt(bool SExt)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:332
Parameters
- bool SExt
¶void setUnpaddedCoerceToType(llvm::Type* T)
void setUnpaddedCoerceToType(llvm::Type* T)
Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:129
Parameters
- llvm::Type* T