]> granicus.if.org Git - clang/commit
CUDA: Fix incorrect target inference for implicit members.
authorEli Bendersky <eliben@google.com>
Mon, 29 Sep 2014 20:38:29 +0000 (20:38 +0000)
committerEli Bendersky <eliben@google.com>
Mon, 29 Sep 2014 20:38:29 +0000 (20:38 +0000)
commitdcb6994528fa268d0392e56358a5b78509fbc033
tree252b84cfeae3adfde05ddd32cb1fe179eeec215f
parent7cff8772838d776ccfd1e4eeaba9fd89488a97dd
CUDA: Fix incorrect target inference for implicit members.

As PR20495 demonstrates, Clang currenlty infers the CUDA target (host/device,
etc) for implicit members (constructors, etc.) incorrectly. This causes errors
and even assertions in Clang when compiling code (assertions in C++11 mode where
implicit move constructors are added into the mix).

Fix the problem by inferring the target from the methods the implicit member
should call (depending on its base classes and fields).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@218624 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Basic/Attr.td
include/clang/Basic/DiagnosticSemaKinds.td
include/clang/Sema/Sema.h
lib/Sema/SemaCUDA.cpp
lib/Sema/SemaDeclCXX.cpp
lib/Sema/SemaOverload.cpp
test/SemaCUDA/implicit-member-target-collision-cxx11.cu [new file with mode: 0644]
test/SemaCUDA/implicit-member-target-collision.cu [new file with mode: 0644]
test/SemaCUDA/implicit-member-target.cu [new file with mode: 0644]