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

Methods

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

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:305

bool canHavePaddingType() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:120

void dump() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:475

bool getCanBeFlattened() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:465

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

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:358

ArrayRef<llvm::Type*>
getCoerceAndExpandTypeSequence() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:368

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)

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

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:319

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

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:310

static clang::CodeGen::ABIArgInfo getExpand()

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:234

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)

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)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:190

Parameters

clang::QualType Ty
llvm::Type* T = nullptr

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)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:228

Parameters

unsigned int FieldIndex
bool Indirect = false

unsigned int getInAllocaFieldIndex() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:435

unsigned int getInAllocaIndirect() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:444

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

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)

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

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)

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

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:389

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)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:222

Parameters

clang::CharUnits Alignment
bool ByVal = true
bool Realign = false

bool getIndirectRealign() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:417

clang::CodeGen::ABIArgInfo::Kind getKind() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:295

bool getPaddingInReg() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:341

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)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:159

Parameters

clang::QualType Ty
llvm::Type* T = nullptr

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)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:170

Parameters

clang::QualType Ty
llvm::Type* T = nullptr

bool isCoerceAndExpand() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:303

bool isDirect() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:296

bool isExpand() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:302

bool isExtend() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:298

bool isIgnore() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:299

bool isInAlloca() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:297

bool isIndirect() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:300

bool isIndirectAliased() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:301

static bool isPaddingForCoerceAndExpand(
    llvm::Type* eltType)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:286

Parameters

llvm::Type* eltType

bool isSRetAfterThis() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:426

bool isSignExt() const

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:328

void setCanBeFlattened(bool Flatten)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:470

Parameters

bool Flatten

void setCoerceToType(llvm::Type* T)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:353

Parameters

llvm::Type* T

void setDirectAlign(unsigned int Align)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:323

Parameters

unsigned int Align

void setDirectOffset(unsigned int Offset)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:314

Parameters

unsigned int Offset

void setInAllocaFieldIndex(
    unsigned int FieldIndex)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:439

Parameters

unsigned int FieldIndex

void setInAllocaIndirect(bool Indirect)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:448

Parameters

bool Indirect

void setInAllocaSRet(bool SRet)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:460

Parameters

bool SRet

void setInReg(bool IR)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:383

Parameters

bool IR

void setIndirectAddrSpace(unsigned int AddrSpace)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:412

Parameters

unsigned int AddrSpace

void setIndirectAlign(clang::CharUnits IA)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:393

Parameters

clang::CharUnits IA

void setIndirectByVal(bool IBV)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:402

Parameters

bool IBV

void setIndirectRealign(bool IR)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:421

Parameters

bool IR

void setPaddingInReg(bool PIR)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:344

Parameters

bool PIR

void setPaddingType(llvm::Type* T)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:124

Parameters

llvm::Type* T

void setSRetAfterThis(bool AfterThis)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:430

Parameters

bool AfterThis

void setSignExt(bool SExt)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:332

Parameters

bool SExt

void setUnpaddedCoerceToType(llvm::Type* T)

Declared at: clang/include/clang/CodeGen/CGFunctionInfo.h:129

Parameters

llvm::Type* T