10 #ifndef LLVM_CLANG_LIB_CODEGEN_ABIINFO_H
11 #define LLVM_CLANG_LIB_CODEGEN_ABIINFO_H
14 #include "llvm/IR/CallingConv.h"
15 #include "llvm/IR/Type.h"
33 class CodeGenFunction;
38 class SwiftAggLowering;
106 uint64_t Members)
const;
111 uint64_t &Members)
const;
117 bool Realign =
false,
139 bool asReturnValue)
const = 0;
143 unsigned elts)
const;
A (possibly-)qualified type.
llvm::CallingConv::ID getBuiltinCC() const
Return the calling convention to use for compiler builtins.
C Language Family Type Representation.
CodeGen::ABIArgInfo getNaturalAlignIndirect(QualType Ty, bool ByRef=true, bool Realign=false, llvm::Type *Padding=nullptr) const
A convenience method to return an indirect ABIArgInfo with an expected alignment equal to the ABI ali...
CodeGen::CGCXXABI & getCXXABI() const
The base class of the type hierarchy.
SwiftABIInfo(CodeGen::CodeGenTypes &cgt)
virtual bool shouldSignExtUnsignedType(QualType Ty) const
llvm::LLVMContext & getVMContext() const
virtual bool shouldPassIndirectlyForSwift(CharUnits totalSize, ArrayRef< llvm::Type * > types, bool asReturnValue) const =0
CodeGen::CodeGenTypes & CGT
CodeGenFunction - This class organizes the per-function state that is used while generating LLVM code...
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
virtual CodeGen::Address EmitMSVAArg(CodeGen::CodeGenFunction &CGF, CodeGen::Address VAListAddr, QualType Ty) const
Emit the target dependent code to load a value of.
ABIInfo(CodeGen::CodeGenTypes &cgt)
CharUnits - This is an opaque type for sizes expressed in character units.
CodeGen::ABIArgInfo getNaturalAlignIndirectInReg(QualType Ty, bool Realign=false) const
ABIArgInfo - Helper class to encapsulate information about how a specific C type should be passed to ...
static bool classof(const ABIInfo *info)
const llvm::DataLayout & getDataLayout() const
Exposes information about the current target.
virtual bool isHomogeneousAggregateBaseType(QualType Ty) const
virtual bool isLegalVectorTypeForSwift(CharUnits totalSize, llvm::Type *eltTy, unsigned elts) const
llvm::CallingConv::ID RuntimeCC
CallingConv
CallingConv - Specifies the calling convention that a function uses.
The l-value was considered opaque, so the alignment was determined from a type.
virtual void computeInfo(CodeGen::CGFunctionInfo &FI) const =0
bool isHomogeneousAggregate(QualType Ty, const Type *&Base, uint64_t &Members) const
isHomogeneousAggregate - Return true if a type is an ELFv2 homogeneous aggregate. ...
llvm::CallingConv::ID BuiltinCC
virtual CodeGen::Address EmitVAArg(CodeGen::CodeGenFunction &CGF, CodeGen::Address VAListAddr, QualType Ty) const =0
EmitVAArg - Emit the target dependent code to load a value of.
CGFunctionInfo - Class to encapsulate the information about a function definition.
virtual bool isHomogeneousAggregateSmallEnough(const Type *Base, uint64_t Members) const
A refining implementation of ABIInfo for targets that support swiftcall.
Implements C++ ABI-specific code generation functions.
This class organizes the cross-module state that is used while lowering AST types to LLVM types...
const TargetInfo & getTarget() const
llvm::CallingConv::ID getRuntimeCC() const
Return the calling convention to use for system runtime functions.
virtual bool supportsSwift() const
ABIInfo - Target specific hooks for defining how a type should be passed or returned from functions...
bool supportsSwift() const finaloverride
ASTContext & getContext() const