Support Swift calling convention for PPC64 targets
This adds basic support for the Swift calling convention with PPC64 targets. Patch provided by Atul Sowani in bug report #37223 llvm-svn: 333316
This commit is contained in:
parent
39281931ec
commit
fa84fc916c
|
@ -335,6 +335,15 @@ public:
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
CallingConvCheckResult checkCallingConvention(CallingConv CC) const override {
|
||||
switch (CC) {
|
||||
case CC_Swift:
|
||||
return CCCR_OK;
|
||||
default:
|
||||
return CCCR_Warning;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
class LLVM_LIBRARY_VISIBILITY DarwinPPC32TargetInfo
|
||||
|
|
|
@ -4287,7 +4287,7 @@ PPC32TargetCodeGenInfo::initDwarfEHRegSizeTable(CodeGen::CodeGenFunction &CGF,
|
|||
|
||||
namespace {
|
||||
/// PPC64_SVR4_ABIInfo - The 64-bit PowerPC ELF (SVR4) ABI information.
|
||||
class PPC64_SVR4_ABIInfo : public ABIInfo {
|
||||
class PPC64_SVR4_ABIInfo : public SwiftABIInfo {
|
||||
public:
|
||||
enum ABIKind {
|
||||
ELFv1 = 0,
|
||||
|
@ -4331,7 +4331,7 @@ private:
|
|||
public:
|
||||
PPC64_SVR4_ABIInfo(CodeGen::CodeGenTypes &CGT, ABIKind Kind, bool HasQPX,
|
||||
bool SoftFloatABI)
|
||||
: ABIInfo(CGT), Kind(Kind), HasQPX(HasQPX),
|
||||
: SwiftABIInfo(CGT), Kind(Kind), HasQPX(HasQPX),
|
||||
IsSoftFloatABI(SoftFloatABI) {}
|
||||
|
||||
bool isPromotableTypeForABI(QualType Ty) const;
|
||||
|
@ -4374,6 +4374,15 @@ public:
|
|||
|
||||
Address EmitVAArg(CodeGenFunction &CGF, Address VAListAddr,
|
||||
QualType Ty) const override;
|
||||
|
||||
bool shouldPassIndirectlyForSwift(ArrayRef<llvm::Type*> scalars,
|
||||
bool asReturnValue) const override {
|
||||
return occupiesMoreThan(CGT, scalars, /*total*/ 4);
|
||||
}
|
||||
|
||||
bool isSwiftErrorInRegister() const override {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
class PPC64_SVR4_TargetCodeGenInfo : public TargetCodeGenInfo {
|
||||
|
|
Loading…
Reference in New Issue