diff --git a/clang/include/clang/Basic/TargetInfo.h b/clang/include/clang/Basic/TargetInfo.h index 41f3c2e403cbef..308d2ae830bf26 100644 --- a/clang/include/clang/Basic/TargetInfo.h +++ b/clang/include/clang/Basic/TargetInfo.h @@ -1606,6 +1606,8 @@ class TargetInfo : public TransferrableTargetInfo, default: return CCCR_Warning; case CC_C: + case CC_Swift: + case CC_SwiftAsync: return CCCR_OK; } } diff --git a/clang/lib/CodeGen/ABIInfo.cpp b/clang/lib/CodeGen/ABIInfo.cpp index 1b56cf7c596d06..86897504b0ad26 100644 --- a/clang/lib/CodeGen/ABIInfo.cpp +++ b/clang/lib/CodeGen/ABIInfo.cpp @@ -33,6 +33,10 @@ const CodeGenOptions &ABIInfo::getCodeGenOpts() const { return CGT.getCodeGenOpts(); } +CodeGen::CodeGenTypes &ABIInfo::getCodeGenTypes() const { + return CGT; +} + bool ABIInfo::isAndroid() const { return getTarget().getTriple().isAndroid(); } bool ABIInfo::isOHOSFamily() const { diff --git a/clang/lib/CodeGen/ABIInfo.h b/clang/lib/CodeGen/ABIInfo.h index b9a5ef6e436693..99b262bdb52968 100644 --- a/clang/lib/CodeGen/ABIInfo.h +++ b/clang/lib/CodeGen/ABIInfo.h @@ -60,6 +60,7 @@ class ABIInfo { const llvm::DataLayout &getDataLayout() const; const TargetInfo &getTarget() const; const CodeGenOptions &getCodeGenOpts() const; + CodeGen::CodeGenTypes &getCodeGenTypes() const; /// Return the calling convention to use for system runtime /// functions. diff --git a/clang/lib/CodeGen/TargetInfo.cpp b/clang/lib/CodeGen/TargetInfo.cpp index 3d79f92137abc7..fdcf77ef9ce547 100644 --- a/clang/lib/CodeGen/TargetInfo.cpp +++ b/clang/lib/CodeGen/TargetInfo.cpp @@ -67,7 +67,9 @@ LLVM_DUMP_METHOD void ABIArgInfo::dump() const { } TargetCodeGenInfo::TargetCodeGenInfo(std::unique_ptr Info) - : Info(std::move(Info)) {} + : Info(std::move(Info)), + SwiftInfo(std::make_unique( + this->Info->getCodeGenTypes(), /*SwiftErrorInRegister*/ false)) {} TargetCodeGenInfo::~TargetCodeGenInfo() = default;