Author: yaxunl Date: Thu Mar 29 07:50:00 2018 New Revision: 328793 URL: http://llvm.org/viewvc/llvm-project?rev=328793&view=rev Log: Disable emitting static extern C aliases for amdgcn target for CUDA
Patch by Greg Rodgers. Revised and lit test added by Yaxun Liu. Differential Revision: https://reviews.llvm.org/D44987 Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/CodeGen/TargetInfo.cpp cfe/trunk/lib/CodeGen/TargetInfo.h cfe/trunk/test/CodeGenCUDA/alias.cu Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=328793&r1=328792&r2=328793&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Thu Mar 29 07:50:00 2018 @@ -4677,9 +4677,7 @@ static void EmitGlobalDeclMetadata(CodeG /// to such functions with an unmangled name from inline assembly within the /// same translation unit. void CodeGenModule::EmitStaticExternCAliases() { - // Don't do anything if we're generating CUDA device code -- the NVPTX - // assembly target doesn't support aliases. - if (Context.getTargetInfo().getTriple().isNVPTX()) + if (!getTargetCodeGenInfo().shouldEmitStaticExternCAliases()) return; for (auto &I : StaticExternCValues) { IdentifierInfo *Name = I.first; Modified: cfe/trunk/lib/CodeGen/TargetInfo.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/TargetInfo.cpp?rev=328793&r1=328792&r2=328793&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/TargetInfo.cpp (original) +++ cfe/trunk/lib/CodeGen/TargetInfo.cpp Thu Mar 29 07:50:00 2018 @@ -6154,6 +6154,7 @@ public: void setTargetAttributes(const Decl *D, llvm::GlobalValue *GV, CodeGen::CodeGenModule &M) const override; + bool shouldEmitStaticExternCAliases() const override; private: // Adds a NamedMDNode with F, Name, and Operand as operands, and adds the @@ -6275,6 +6276,10 @@ void NVPTXTargetCodeGenInfo::addNVVMMeta // Append metadata to nvvm.annotations MD->addOperand(llvm::MDNode::get(Ctx, MDVals)); } + +bool NVPTXTargetCodeGenInfo::shouldEmitStaticExternCAliases() const { + return false; +} } //===----------------------------------------------------------------------===// @@ -7646,6 +7651,7 @@ public: createEnqueuedBlockKernel(CodeGenFunction &CGF, llvm::Function *BlockInvokeFunc, llvm::Value *BlockLiteral) const override; + bool shouldEmitStaticExternCAliases() const override; }; } @@ -7777,6 +7783,10 @@ AMDGPUTargetCodeGenInfo::getLLVMSyncScop return C.getOrInsertSyncScopeID(Name); } +bool AMDGPUTargetCodeGenInfo::shouldEmitStaticExternCAliases() const { + return false; +} + //===----------------------------------------------------------------------===// // SPARC v8 ABI Implementation. // Based on the SPARC Compliance Definition version 2.4.1. Modified: cfe/trunk/lib/CodeGen/TargetInfo.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/TargetInfo.h?rev=328793&r1=328792&r2=328793&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/TargetInfo.h (original) +++ cfe/trunk/lib/CodeGen/TargetInfo.h Thu Mar 29 07:50:00 2018 @@ -296,6 +296,11 @@ public: createEnqueuedBlockKernel(CodeGenFunction &CGF, llvm::Function *BlockInvokeFunc, llvm::Value *BlockLiteral) const; + + /// \return true if the target supports alias from the unmangled name to the + /// mangled name of functions declared within an extern "C" region and marked + /// as 'used', and having internal linkage. + virtual bool shouldEmitStaticExternCAliases() const { return true; } }; } // namespace CodeGen Modified: cfe/trunk/test/CodeGenCUDA/alias.cu URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCUDA/alias.cu?rev=328793&r1=328792&r2=328793&view=diff ============================================================================== --- cfe/trunk/test/CodeGenCUDA/alias.cu (original) +++ cfe/trunk/test/CodeGenCUDA/alias.cu Thu Mar 29 07:50:00 2018 @@ -1,8 +1,11 @@ // REQUIRES: x86-registered-target // REQUIRES: nvptx-registered-target +// REQUIRES: amdgpu-registered-target // RUN: %clang_cc1 -fcuda-is-device -triple nvptx-nvidia-cuda -emit-llvm \ // RUN: -o - %s | FileCheck %s +// RUN: %clang_cc1 -fcuda-is-device -triple amdgcn -emit-llvm \ +// RUN: -o - %s | FileCheck %s #include "Inputs/cuda.h" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits