summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorArtem Belevich <tra@google.com>2015-04-27 18:52:00 +0000
committerArtem Belevich <tra@google.com>2015-04-27 18:52:00 +0000
commit0488d1e4ba71d364e8f11bd6837a811e32fbf5b1 (patch)
tree0cd48efc28bdd8b8e113278654d4a2e2730bd4c2 /clang/lib/CodeGen/CodeGenModule.cpp
parentfd8a75d73096ebc11d3231cd049c81011af12ecc (diff)
downloadbcm5719-llvm-0488d1e4ba71d364e8f11bd6837a811e32fbf5b1.tar.gz
bcm5719-llvm-0488d1e4ba71d364e8f11bd6837a811e32fbf5b1.zip
[cuda] treat file scope __asm as __host__ and ignore it during device-side compilation.
Currently clang emits file-scope asm during *both* host and device compilation modes which is usually a wrong thing to do. There's no way to attach any attribute to an __asm statement, so there's no way to differentiate between host-side and device-side file-scope asm. This patch makes clang to match nvcc behavior and emit file-scope-asm only during host-side compilation. Differential Revision: http://reviews.llvm.org/D9270 llvm-svn: 235905
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
-rw-r--r--clang/lib/CodeGen/CodeGenModule.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index b30885d4cdb..c517d17666d 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -3356,6 +3356,9 @@ void CodeGenModule::EmitTopLevelDecl(Decl *D) {
break;
case Decl::FileScopeAsm: {
+ // File-scope asm is ignored during device-side CUDA compilation.
+ if (LangOpts.CUDA && LangOpts.CUDAIsDevice)
+ break;
auto *AD = cast<FileScopeAsmDecl>(D);
getModule().appendModuleInlineAsm(AD->getAsmString()->getString());
break;
OpenPOWER on IntegriCloud