|
LLVM 23.0.0git
|
Helper class to encapsulate information about how a specific type should be passed to or returned from a function. More...
#include "llvm/ABI/FunctionInfo.h"
Public Types | |
| enum | Kind { Direct , Extend , Indirect , Ignore } |
Public Member Functions | |
| ArgInfo & | setSignExt (bool SignExtend=true) |
| ArgInfo & | setZeroExt (bool ZeroExtend=true) |
| Kind | getKind () const |
| bool | isDirect () const |
| bool | isIndirect () const |
| bool | isIgnore () const |
| bool | isExtend () const |
| unsigned | getDirectOffset () const |
| MaybeAlign | getDirectAlign () const |
| Align | getIndirectAlign () const |
| unsigned | getIndirectAddrSpace () const |
| bool | getIndirectByVal () const |
| bool | getIndirectRealign () const |
| bool | isSignExt () const |
| bool | isZeroExt () const |
| bool | isNoExt () const |
| const Type * | getCoerceToType () const |
Static Public Member Functions | |
| static ArgInfo | getDirect (const Type *T=nullptr, unsigned Offset=0, MaybeAlign Align=std::nullopt) |
| static ArgInfo | getExtend (const Type *T) |
| static ArgInfo | getIndirect (Align Align, bool ByVal, unsigned AddrSpace=0, bool Realign=false) |
| Realign: the caller couldn't guarantee sufficient alignment - the callee must copy the argument to a properly aligned temporary before use. | |
| static ArgInfo | getIgnore () |
Helper class to encapsulate information about how a specific type should be passed to or returned from a function.
Definition at line 30 of file FunctionInfo.h.
| Enumerator | |
|---|---|
| Direct | Pass the argument directly using the normal converted LLVM type, or by coercing to another specified type stored in 'CoerceToType'. |
| Extend | Valid only for integer argument types. Same as 'direct' but also emit a zero/sign extension attribute. |
| Indirect | Pass the argument indirectly via a hidden pointer with the specified alignment and address space. |
| Ignore | Ignore the argument (treat as void). Useful for void and empty structs. |
Definition at line 32 of file FunctionInfo.h.
Definition at line 196 of file FunctionInfo.h.
References assert(), isDirect(), and isExtend().
|
inlinestatic |
| T | The type to coerce to. If null, the argument's original type is used directly. |
| Offset | Byte offset into the memory representation at which the coerced type begins. Used when only part of a larger value is passed directly (e.g. the high word of a multi-eightbyte return value on x86-64). |
| Align | Override for the argument's alignment. If absent, the default alignment for T is used. |
Definition at line 88 of file FunctionInfo.h.
References Direct, DirectAttr, llvm::Offset, and T.
|
inline |
Definition at line 154 of file FunctionInfo.h.
References assert(), isDirect(), and isExtend().
|
inline |
Definition at line 149 of file FunctionInfo.h.
References assert(), DirectAttr, isDirect(), and isExtend().
Definition at line 97 of file FunctionInfo.h.
References assert(), llvm::cast(), DirectAttr, Extend, setSignExt(), setZeroExt(), and T.
|
inlinestatic |
Definition at line 127 of file FunctionInfo.h.
References Ignore.
|
inlinestatic |
Realign: the caller couldn't guarantee sufficient alignment - the callee must copy the argument to a properly aligned temporary before use.
Definition at line 117 of file FunctionInfo.h.
References Indirect, and IndirectAttr.
|
inline |
Definition at line 166 of file FunctionInfo.h.
References assert(), IndirectAttr, and isIndirect().
|
inline |
Definition at line 159 of file FunctionInfo.h.
References assert(), and isIndirect().
|
inline |
Definition at line 171 of file FunctionInfo.h.
References assert(), and isIndirect().
|
inline |
Definition at line 176 of file FunctionInfo.h.
References assert(), and isIndirect().
|
inline |
Definition at line 143 of file FunctionInfo.h.
|
inline |
Definition at line 144 of file FunctionInfo.h.
References Direct.
Referenced by getCoerceToType(), getDirectAlign(), and getDirectOffset().
|
inline |
Definition at line 147 of file FunctionInfo.h.
References Extend.
Referenced by getCoerceToType(), getDirectAlign(), getDirectOffset(), isNoExt(), isSignExt(), and isZeroExt().
|
inline |
Definition at line 146 of file FunctionInfo.h.
References Ignore.
|
inline |
Definition at line 145 of file FunctionInfo.h.
References Indirect.
Referenced by getIndirectAddrSpace(), getIndirectAlign(), getIndirectByVal(), and getIndirectRealign().
|
inline |
Definition at line 191 of file FunctionInfo.h.
References assert(), and isExtend().
|
inline |
Definition at line 181 of file FunctionInfo.h.
References assert(), and isExtend().
|
inline |
Definition at line 186 of file FunctionInfo.h.
References assert(), and isExtend().
Definition at line 129 of file FunctionInfo.h.
Referenced by getExtend().
Definition at line 136 of file FunctionInfo.h.
Referenced by getExtend().
| DirectAttrInfo llvm::abi::ArgInfo::DirectAttr |
Definition at line 65 of file FunctionInfo.h.
Referenced by getDirect(), getDirectOffset(), and getExtend().
| IndirectAttrInfo llvm::abi::ArgInfo::IndirectAttr |
Definition at line 66 of file FunctionInfo.h.
Referenced by getIndirect(), and getIndirectAddrSpace().