#include "ABIInfoImpl.h"
usingnamespaceclang;
usingnamespaceclang::CodeGen;
DefaultABIInfo::~DefaultABIInfo() = default;
ABIArgInfo DefaultABIInfo::classifyArgumentType(QualType Ty) const { … }
ABIArgInfo DefaultABIInfo::classifyReturnType(QualType RetTy) const { … }
void DefaultABIInfo::computeInfo(CGFunctionInfo &FI) const { … }
RValue DefaultABIInfo::EmitVAArg(CodeGenFunction &CGF, Address VAListAddr,
QualType Ty, AggValueSlot Slot) const { … }
ABIArgInfo CodeGen::coerceToIntArray(QualType Ty, ASTContext &Context,
llvm::LLVMContext &LLVMContext) { … }
void CodeGen::AssignToArrayRange(CodeGen::CGBuilderTy &Builder,
llvm::Value *Array, llvm::Value *Value,
unsigned FirstIndex, unsigned LastIndex) { … }
bool CodeGen::isAggregateTypeForABI(QualType T) { … }
llvm::Type *CodeGen::getVAListElementType(CodeGenFunction &CGF) { … }
CGCXXABI::RecordArgABI CodeGen::getRecordArgABI(const RecordType *RT,
CGCXXABI &CXXABI) { … }
CGCXXABI::RecordArgABI CodeGen::getRecordArgABI(QualType T, CGCXXABI &CXXABI) { … }
bool CodeGen::classifyReturnType(const CGCXXABI &CXXABI, CGFunctionInfo &FI,
const ABIInfo &Info) { … }
QualType CodeGen::useFirstFieldIfTransparentUnion(QualType Ty) { … }
llvm::Value *CodeGen::emitRoundPointerUpToAlignment(CodeGenFunction &CGF,
llvm::Value *Ptr,
CharUnits Align) { … }
Address
CodeGen::emitVoidPtrDirectVAArg(CodeGenFunction &CGF, Address VAListAddr,
llvm::Type *DirectTy, CharUnits DirectSize,
CharUnits DirectAlign, CharUnits SlotSize,
bool AllowHigherAlign, bool ForceRightAdjust) { … }
RValue CodeGen::emitVoidPtrVAArg(CodeGenFunction &CGF, Address VAListAddr,
QualType ValueTy, bool IsIndirect,
TypeInfoChars ValueInfo,
CharUnits SlotSizeAndAlign,
bool AllowHigherAlign, AggValueSlot Slot,
bool ForceRightAdjust) { … }
Address CodeGen::emitMergePHI(CodeGenFunction &CGF, Address Addr1,
llvm::BasicBlock *Block1, Address Addr2,
llvm::BasicBlock *Block2,
const llvm::Twine &Name) { … }
bool CodeGen::isEmptyField(ASTContext &Context, const FieldDecl *FD,
bool AllowArrays, bool AsIfNoUniqueAddr) { … }
bool CodeGen::isEmptyRecord(ASTContext &Context, QualType T, bool AllowArrays,
bool AsIfNoUniqueAddr) { … }
bool CodeGen::isEmptyFieldForLayout(const ASTContext &Context,
const FieldDecl *FD) { … }
bool CodeGen::isEmptyRecordForLayout(const ASTContext &Context, QualType T) { … }
const Type *CodeGen::isSingleElementStruct(QualType T, ASTContext &Context) { … }
Address CodeGen::EmitVAArgInstr(CodeGenFunction &CGF, Address VAListAddr,
QualType Ty, const ABIArgInfo &AI) { … }
bool CodeGen::isSIMDVectorType(ASTContext &Context, QualType Ty) { … }
bool CodeGen::isRecordWithSIMDVectorType(ASTContext &Context, QualType Ty) { … }