diff options
| author | Artem Belevich <tra@google.com> | 2018-04-03 18:29:31 +0000 |
|---|---|---|
| committer | Artem Belevich <tra@google.com> | 2018-04-03 18:29:31 +0000 |
| commit | 55ebd6cc26422fbcf6dfb75fa63ed9c36bd9a4c0 (patch) | |
| tree | 4073f23d596c77601dda4acc4907df1f34580154 /clang/lib | |
| parent | bb0ad1e88221aa56a70484aaf02ec418ebc753e7 (diff) | |
| download | bcm5719-llvm-55ebd6cc26422fbcf6dfb75fa63ed9c36bd9a4c0.tar.gz bcm5719-llvm-55ebd6cc26422fbcf6dfb75fa63ed9c36bd9a4c0.zip | |
Revert "Set calling convention for CUDA kernel"
This reverts r328795 which introduced an issue with referencing __global__
function templates. More details in the original review D44747.
llvm-svn: 329099
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/AST/ItaniumMangle.cpp | 1 | ||||
| -rw-r--r-- | clang/lib/AST/Type.cpp | 1 | ||||
| -rw-r--r-- | clang/lib/AST/TypePrinter.cpp | 4 | ||||
| -rw-r--r-- | clang/lib/CodeGen/CGCall.cpp | 1 | ||||
| -rw-r--r-- | clang/lib/CodeGen/CGDebugInfo.cpp | 3 | ||||
| -rw-r--r-- | clang/lib/CodeGen/TargetInfo.cpp | 9 | ||||
| -rw-r--r-- | clang/lib/CodeGen/TargetInfo.h | 3 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 11 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaOverload.cpp | 1 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaType.cpp | 12 |
10 files changed, 1 insertions, 45 deletions
diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp index 0f22bf275cb..d42d705d090 100644 --- a/clang/lib/AST/ItaniumMangle.cpp +++ b/clang/lib/AST/ItaniumMangle.cpp @@ -2628,7 +2628,6 @@ StringRef CXXNameMangler::getCallingConvQualifierName(CallingConv CC) { case CC_OpenCLKernel: case CC_PreserveMost: case CC_PreserveAll: - case CC_CUDAKernel: // FIXME: we should be mangling all of the above. return ""; diff --git a/clang/lib/AST/Type.cpp b/clang/lib/AST/Type.cpp index c2733f25637..cca5ddc1e48 100644 --- a/clang/lib/AST/Type.cpp +++ b/clang/lib/AST/Type.cpp @@ -2748,7 +2748,6 @@ StringRef FunctionType::getNameForCallConv(CallingConv CC) { case CC_Swift: return "swiftcall"; case CC_PreserveMost: return "preserve_most"; case CC_PreserveAll: return "preserve_all"; - case CC_CUDAKernel: return "cuda_kernel"; } llvm_unreachable("Invalid calling convention."); diff --git a/clang/lib/AST/TypePrinter.cpp b/clang/lib/AST/TypePrinter.cpp index fe67f4e3b27..d46f8d3348e 100644 --- a/clang/lib/AST/TypePrinter.cpp +++ b/clang/lib/AST/TypePrinter.cpp @@ -780,10 +780,6 @@ void TypePrinter::printFunctionAfter(const FunctionType::ExtInfo &Info, case CC_OpenCLKernel: // Do nothing. These CCs are not available as attributes. break; - case CC_CUDAKernel: - // ToDo: print this before the function. - OS << " __global__"; - break; case CC_Swift: OS << " __attribute__((swiftcall))"; break; diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp index c0451fb97ba..b01926e1cae 100644 --- a/clang/lib/CodeGen/CGCall.cpp +++ b/clang/lib/CodeGen/CGCall.cpp @@ -64,7 +64,6 @@ unsigned CodeGenTypes::ClangCallConvToLLVMCallConv(CallingConv CC) { case CC_PreserveMost: return llvm::CallingConv::PreserveMost; case CC_PreserveAll: return llvm::CallingConv::PreserveAll; case CC_Swift: return llvm::CallingConv::Swift; - case CC_CUDAKernel: return CGM.getTargetCodeGenInfo().getCUDAKernelCallingConv(); } } diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index b6d336a2e8b..c72a5e58b47 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/lib/CodeGen/CGDebugInfo.cpp @@ -1022,9 +1022,6 @@ static unsigned getDwarfCC(CallingConv CC) { return llvm::dwarf::DW_CC_LLVM_PreserveAll; case CC_X86RegCall: return llvm::dwarf::DW_CC_LLVM_X86RegCall; - case CC_CUDAKernel: - // ToDo: Add llvm::dwarf::DW_CC_LLVM_CUDAKernel; - return 0; } return 0; } diff --git a/clang/lib/CodeGen/TargetInfo.cpp b/clang/lib/CodeGen/TargetInfo.cpp index 68edb325826..f98faeb7ee6 100644 --- a/clang/lib/CodeGen/TargetInfo.cpp +++ b/clang/lib/CodeGen/TargetInfo.cpp @@ -431,10 +431,6 @@ unsigned TargetCodeGenInfo::getOpenCLKernelCallingConv() const { return llvm::CallingConv::SPIR_KERNEL; } -unsigned TargetCodeGenInfo::getCUDAKernelCallingConv() const { - return llvm::CallingConv::C; -} - llvm::Constant *TargetCodeGenInfo::getNullPointer(const CodeGen::CodeGenModule &CGM, llvm::PointerType *T, QualType QT) const { return llvm::ConstantPointerNull::get(T); @@ -7639,7 +7635,6 @@ public: void setTargetAttributes(const Decl *D, llvm::GlobalValue *GV, CodeGen::CodeGenModule &M) const override; unsigned getOpenCLKernelCallingConv() const override; - unsigned getCUDAKernelCallingConv() const override; llvm::Constant *getNullPointer(const CodeGen::CodeGenModule &CGM, llvm::PointerType *T, QualType QT) const override; @@ -7727,10 +7722,6 @@ unsigned AMDGPUTargetCodeGenInfo::getOpenCLKernelCallingConv() const { return llvm::CallingConv::AMDGPU_KERNEL; } -unsigned AMDGPUTargetCodeGenInfo::getCUDAKernelCallingConv() const { - return llvm::CallingConv::AMDGPU_KERNEL; -} - // Currently LLVM assumes null pointers always have value 0, // which results in incorrectly transformed IR. Therefore, instead of // emitting null pointers in private and local address spaces, a null diff --git a/clang/lib/CodeGen/TargetInfo.h b/clang/lib/CodeGen/TargetInfo.h index ab463c5dc6e..533e14514ff 100644 --- a/clang/lib/CodeGen/TargetInfo.h +++ b/clang/lib/CodeGen/TargetInfo.h @@ -223,9 +223,6 @@ public: /// Get LLVM calling convention for OpenCL kernel. virtual unsigned getOpenCLKernelCallingConv() const; - /// Get LLVM calling convention for CUDA kernel. - virtual unsigned getCUDAKernelCallingConv() const; - /// Get target specific null pointer. /// \param T is the LLVM type of the null pointer. /// \param QT is the clang QualType of the null pointer. diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index c5f581f4232..0e097daa618 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -25,7 +25,6 @@ #include "clang/AST/ExprObjC.h" #include "clang/AST/ExprOpenMP.h" #include "clang/AST/RecursiveASTVisitor.h" -#include "clang/AST/Type.h" #include "clang/AST/TypeLoc.h" #include "clang/Basic/PartialDiagnostic.h" #include "clang/Basic/SourceManager.h" @@ -1659,16 +1658,6 @@ Sema::BuildDeclRefExpr(ValueDecl *D, QualType Ty, ExprValueKind VK, isa<VarDecl>(D) && NeedToCaptureVariable(cast<VarDecl>(D), NameInfo.getLoc()); - // Drop CUDA kernel calling convention since it is invisible to the user - // in DRE. - if (const auto *FT = Ty->getAs<FunctionType>()) { - if (FT->getCallConv() == CC_CUDAKernel) { - FT = Context.adjustFunctionType(FT, - FT->getExtInfo().withCallingConv(CC_C)); - Ty = QualType(FT, Ty.getQualifiers().getAsOpaqueValue()); - } - } - DeclRefExpr *E; if (isa<VarTemplateSpecializationDecl>(D)) { VarTemplateSpecializationDecl *VarSpec = diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp index e917bcc1cc2..dea1c2efe9d 100644 --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -1481,6 +1481,7 @@ bool Sema::IsFunctionConversion(QualType FromType, QualType ToType, .getTypePtr()); Changed = true; } + // Convert FromFPT's ExtParameterInfo if necessary. The conversion is valid // only if the ExtParameterInfo lists of the two function prototypes can be // merged and the merged list is identical to ToFPT's ExtParameterInfo list. diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp index 7bcc5b66fb7..00bb21ff307 100644 --- a/clang/lib/Sema/SemaType.cpp +++ b/clang/lib/Sema/SemaType.cpp @@ -3316,18 +3316,6 @@ getCCForDeclaratorChunk(Sema &S, Declarator &D, CallingConv CC = S.Context.getDefaultCallingConvention(FTI.isVariadic, IsCXXInstanceMethod); - // Attribute AT_CUDAGlobal affects the calling convention for AMDGPU targets. - // This is the simplest place to infer calling convention for CUDA kernels. - if (S.getLangOpts().CUDA && S.getLangOpts().CUDAIsDevice) { - for (const AttributeList *Attr = D.getDeclSpec().getAttributes().getList(); - Attr; Attr = Attr->getNext()) { - if (Attr->getKind() == AttributeList::AT_CUDAGlobal) { - CC = CC_CUDAKernel; - break; - } - } - } - // Attribute AT_OpenCLKernel affects the calling convention for SPIR // and AMDGPU targets, hence it cannot be treated as a calling // convention attribute. This is the simplest place to infer |

