#include "clang/CodeGen/SwiftCallingConv.h"
#include "ABIInfo.h"
#include "CodeGenModule.h"
#include "TargetInfo.h"
#include "clang/Basic/TargetInfo.h"
#include <optional>
usingnamespaceclang;
usingnamespaceCodeGen;
usingnamespaceswiftcall;
static const SwiftABIInfo &getSwiftABIInfo(CodeGenModule &CGM) { … }
static bool isPowerOf2(unsigned n) { … }
static llvm::Type *getCommonType(llvm::Type *first, llvm::Type *second) { … }
static CharUnits getTypeStoreSize(CodeGenModule &CGM, llvm::Type *type) { … }
static CharUnits getTypeAllocSize(CodeGenModule &CGM, llvm::Type *type) { … }
void SwiftAggLowering::addTypedData(QualType type, CharUnits begin) { … }
void SwiftAggLowering::addTypedData(const RecordDecl *record, CharUnits begin) { … }
void SwiftAggLowering::addTypedData(const RecordDecl *record, CharUnits begin,
const ASTRecordLayout &layout) { … }
void SwiftAggLowering::addBitFieldData(const FieldDecl *bitfield,
CharUnits recordBegin,
uint64_t bitfieldBitBegin) { … }
void SwiftAggLowering::addTypedData(llvm::Type *type, CharUnits begin) { … }
void SwiftAggLowering::addTypedData(llvm::Type *type,
CharUnits begin, CharUnits end) { … }
void SwiftAggLowering::addLegalTypedData(llvm::Type *type,
CharUnits begin, CharUnits end) { … }
void SwiftAggLowering::addEntry(llvm::Type *type,
CharUnits begin, CharUnits end) { … }
void SwiftAggLowering::splitVectorEntry(unsigned index) { … }
static CharUnits getOffsetAtStartOfUnit(CharUnits offset, CharUnits unitSize) { … }
static bool areBytesInSameUnit(CharUnits first, CharUnits second,
CharUnits chunkSize) { … }
static bool isMergeableEntryType(llvm::Type *type) { … }
bool SwiftAggLowering::shouldMergeEntries(const StorageEntry &first,
const StorageEntry &second,
CharUnits chunkSize) { … }
void SwiftAggLowering::finish() { … }
void SwiftAggLowering::enumerateComponents(EnumerationCallback callback) const { … }
std::pair<llvm::StructType*, llvm::Type*>
SwiftAggLowering::getCoerceAndExpandTypes() const { … }
bool SwiftAggLowering::shouldPassIndirectly(bool asReturnValue) const { … }
bool swiftcall::shouldPassIndirectly(CodeGenModule &CGM,
ArrayRef<llvm::Type*> componentTys,
bool asReturnValue) { … }
CharUnits swiftcall::getMaximumVoluntaryIntegerSize(CodeGenModule &CGM) { … }
CharUnits swiftcall::getNaturalAlignment(CodeGenModule &CGM, llvm::Type *type) { … }
bool swiftcall::isLegalIntegerType(CodeGenModule &CGM,
llvm::IntegerType *intTy) { … }
bool swiftcall::isLegalVectorType(CodeGenModule &CGM, CharUnits vectorSize,
llvm::VectorType *vectorTy) { … }
bool swiftcall::isLegalVectorType(CodeGenModule &CGM, CharUnits vectorSize,
llvm::Type *eltTy, unsigned numElts) { … }
std::pair<llvm::Type*, unsigned>
swiftcall::splitLegalVectorType(CodeGenModule &CGM, CharUnits vectorSize,
llvm::VectorType *vectorTy) { … }
void swiftcall::legalizeVectorType(CodeGenModule &CGM, CharUnits origVectorSize,
llvm::VectorType *origVectorTy,
llvm::SmallVectorImpl<llvm::Type*> &components) { … }
bool swiftcall::mustPassRecordIndirectly(CodeGenModule &CGM,
const RecordDecl *record) { … }
static ABIArgInfo classifyExpandedType(SwiftAggLowering &lowering,
bool forReturn,
CharUnits alignmentForIndirect) { … }
static ABIArgInfo classifyType(CodeGenModule &CGM, CanQualType type,
bool forReturn) { … }
ABIArgInfo swiftcall::classifyReturnType(CodeGenModule &CGM, CanQualType type) { … }
ABIArgInfo swiftcall::classifyArgumentType(CodeGenModule &CGM,
CanQualType type) { … }
void swiftcall::computeABIInfo(CodeGenModule &CGM, CGFunctionInfo &FI) { … }
bool swiftcall::isSwiftErrorLoweredInRegister(CodeGenModule &CGM) { … }