14#ifndef LLVM_ABI_TARGETINFO_H
15#define LLVM_ABI_TARGETINFO_H
static cl::opt< ITMode > IT(cl::desc("IT block support"), cl::Hidden, cl::init(DefaultIT), cl::values(clEnumValN(DefaultIT, "arm-default-it", "Generate any type of IT block"), clEnumValN(RestrictedIT, "arm-restrict-it", "Disallow complex IT blocks")))
Helper class to encapsulate information about how a specific type should be passed to or returned fro...
ArgInfo getNaturalAlignIndirect(const Type *Ty, bool ByVal=true) const
const ABICompatInfo & getABICompatInfo() const
virtual void computeInfo(FunctionInfo &FI) const =0
Populate FI with the target's ABI-lowering decisions for each argument and return value.
bool isPromotableInteger(const IntegerType *IT) const
virtual ~TargetInfo()=default
virtual bool isPassByRef(const Type *Ty) const
bool isAggregateTypeForABI(const Type *Ty) const
RecordArgABI getRecordArgABI(const RecordType *RT) const
TargetInfo(const ABICompatInfo &Info)
Represents the ABI-specific view of a type in LLVM.
This file defines the type system for the LLVMABI library, which mirrors ABI-relevant aspects of fron...
std::unique_ptr< TargetInfo > createBPFTargetInfo(TypeBuilder &TB)
@ RAA_Indirect
Pass it as a pointer to temporary memory.
@ RAA_DirectInMemory
Pass it on the stack using its defined layout.
@ RAA_Default
Pass it using the normal C aggregate rules for the ABI, potentially introducing extra copies and pass...
This is an optimization pass for GlobalISel generic memory operations.
Flags controlling target-specific ABI compatibility behaviour.
bool ClassifyIntegerMMXAsSSE
bool PassInt128VectorsInMem
static ABICompatInfo fromVersion(unsigned)
Return flags matching the ABI emitted by the given Clang major version.
bool ReturnCXXRecordGreaterThan128InMem