diff options
author | Artem Belevich <tra@google.com> | 2015-04-27 18:52:00 +0000 |
---|---|---|
committer | Artem Belevich <tra@google.com> | 2015-04-27 18:52:00 +0000 |
commit | 0488d1e4ba71d364e8f11bd6837a811e32fbf5b1 (patch) | |
tree | 0cd48efc28bdd8b8e113278654d4a2e2730bd4c2 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | fd8a75d73096ebc11d3231cd049c81011af12ecc (diff) | |
download | bcm5719-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.cpp | 3 |
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; |