clang
3.9.0
|
Classes | |
class | SwiftAggLowering |
Functions | |
CharUnits | getMaximumVoluntaryIntegerSize (CodeGenModule &CGM) |
Return the maximum voluntary integer size for the current target. More... | |
CharUnits | getNaturalAlignment (CodeGenModule &CGM, llvm::Type *type) |
Return the Swift CC's notion of the natural alignment of a type. More... | |
bool | isLegalIntegerType (CodeGenModule &CGM, llvm::IntegerType *type) |
Is the given integer type "legal" for Swift's perspective on the current platform? More... | |
bool | isLegalVectorType (CodeGenModule &CGM, CharUnits vectorSize, llvm::VectorType *vectorTy) |
Is the given vector type "legal" for Swift's perspective on the current platform? More... | |
bool | isLegalVectorType (CodeGenModule &CGM, CharUnits vectorSize, llvm::Type *eltTy, unsigned numElts) |
std::pair< llvm::Type *, unsigned > | splitLegalVectorType (CodeGenModule &CGM, CharUnits vectorSize, llvm::VectorType *vectorTy) |
Minimally split a legal vector type. More... | |
void | legalizeVectorType (CodeGenModule &CGM, CharUnits vectorSize, llvm::VectorType *vectorTy, llvm::SmallVectorImpl< llvm::Type * > &types) |
Turn a vector type in a sequence of legal component vector types. More... | |
bool | shouldPassCXXRecordIndirectly (CodeGenModule &CGM, const CXXRecordDecl *record) |
Should a C++ record type be passed and returned indirectly? More... | |
ABIArgInfo | classifyReturnType (CodeGenModule &CGM, CanQualType type) |
Classify the rules for how to return a particular type. More... | |
ABIArgInfo | classifyArgumentType (CodeGenModule &CGM, CanQualType type) |
Classify the rules for how to pass a particular type. More... | |
void | computeABIInfo (CodeGenModule &CGM, CGFunctionInfo &FI) |
Compute the ABI information of a swiftcall function. More... | |
ABIArgInfo clang::CodeGen::swiftcall::classifyArgumentType | ( | CodeGenModule & | CGM, |
CanQualType | type | ||
) |
Classify the rules for how to pass a particular type.
Definition at line 817 of file SwiftCallingConv.cpp.
References classifyType().
Referenced by computeABIInfo().
ABIArgInfo clang::CodeGen::swiftcall::classifyReturnType | ( | CodeGenModule & | CGM, |
CanQualType | type | ||
) |
Classify the rules for how to return a particular type.
Definition at line 813 of file SwiftCallingConv.cpp.
References classifyType().
Referenced by computeABIInfo().
void clang::CodeGen::swiftcall::computeABIInfo | ( | CodeGenModule & | CGM, |
CGFunctionInfo & | FI | ||
) |
Compute the ABI information of a swiftcall function.
This is a private interface for Clang.
Definition at line 822 of file SwiftCallingConv.cpp.
References clang::CodeGen::CGFunctionInfo::arg_begin(), clang::CodeGen::CGFunctionInfo::arg_size(), classifyArgumentType(), classifyReturnType(), clang::CodeGen::CGFunctionInfo::getReturnInfo(), clang::CodeGen::CGFunctionInfo::getReturnType(), and clang::CodeGen::CGFunctionInfoArgInfo::info.
Referenced by clang::CodeGen::CodeGenTypes::arrangeLLVMFunctionInfo().
CharUnits clang::CodeGen::swiftcall::getMaximumVoluntaryIntegerSize | ( | CodeGenModule & | CGM | ) |
Return the maximum voluntary integer size for the current target.
Definition at line 595 of file SwiftCallingConv.cpp.
References clang::CodeGen::CodeGenModule::getContext(), clang::TargetInfo::getPointerWidth(), clang::ASTContext::getTargetInfo(), and clang::ASTContext::toCharUnitsFromBits().
Referenced by clang::CodeGen::swiftcall::SwiftAggLowering::finish().
CharUnits clang::CodeGen::swiftcall::getNaturalAlignment | ( | CodeGenModule & | CGM, |
llvm::Type * | type | ||
) |
Return the Swift CC's notion of the natural alignment of a type.
Definition at line 601 of file SwiftCallingConv.cpp.
References clang::CharUnits::fromQuantity(), clang::CodeGen::CodeGenModule::getDataLayout(), clang::CharUnits::getQuantity(), getTypeStoreSize(), and isPowerOf2().
bool clang::CodeGen::swiftcall::isLegalIntegerType | ( | CodeGenModule & | CGM, |
llvm::IntegerType * | type | ||
) |
Is the given integer type "legal" for Swift's perspective on the current platform?
Definition at line 612 of file SwiftCallingConv.cpp.
References clang::CodeGen::CodeGenModule::getContext(), clang::ASTContext::getTargetInfo(), and clang::TargetInfo::hasInt128Type().
Referenced by clang::CodeGen::swiftcall::SwiftAggLowering::addTypedData().
bool clang::CodeGen::swiftcall::isLegalVectorType | ( | CodeGenModule & | CGM, |
CharUnits | vectorSize, | ||
llvm::VectorType * | vectorTy | ||
) |
Is the given vector type "legal" for Swift's perspective on the current platform?
Definition at line 632 of file SwiftCallingConv.cpp.
Referenced by legalizeVectorType(), and splitLegalVectorType().
bool clang::CodeGen::swiftcall::isLegalVectorType | ( | CodeGenModule & | CGM, |
CharUnits | vectorSize, | ||
llvm::Type * | eltTy, | ||
unsigned | numElts | ||
) |
Definition at line 638 of file SwiftCallingConv.cpp.
References getSwiftABIInfo(), and clang::CodeGen::SwiftABIInfo::isLegalVectorTypeForSwift().
void clang::CodeGen::swiftcall::legalizeVectorType | ( | CodeGenModule & | CGM, |
CharUnits | vectorSize, | ||
llvm::VectorType * | vectorTy, | ||
llvm::SmallVectorImpl< llvm::Type * > & | types | ||
) |
Turn a vector type in a sequence of legal component vector types.
The caller may assume that the sum of the data sizes of the resulting types will equal the data size of the vector type.
Definition at line 660 of file SwiftCallingConv.cpp.
References isLegalVectorType(), and isPowerOf2().
Referenced by clang::CodeGen::swiftcall::SwiftAggLowering::addTypedData().
bool clang::CodeGen::swiftcall::shouldPassCXXRecordIndirectly | ( | CodeGenModule & | CGM, |
const CXXRecordDecl * | record | ||
) |
Should a C++ record type be passed and returned indirectly?
Definition at line 733 of file SwiftCallingConv.cpp.
References clang::CXXRecordDecl::ctors(), and clang::CXXRecordDecl::hasNonTrivialDestructor().
Referenced by classifyType().
std::pair< llvm::Type *, unsigned > clang::CodeGen::swiftcall::splitLegalVectorType | ( | CodeGenModule & | CGM, |
CharUnits | vectorSize, | ||
llvm::VectorType * | vectorTy | ||
) |
Minimally split a legal vector type.
Definition at line 646 of file SwiftCallingConv.cpp.
References isLegalVectorType(), and isPowerOf2().