hanchenye-llvm-project/clang/test/SemaCUDA
Artem Belevich 64135c35f7 [CUDA] Ignore implicit target attributes during function template instantiation.
Some functions and templates are treated as __host__ __device__ even
when they don't have explicitly specified target attributes.
What's worse, this treatment may change depending on command line
options (-fno-cuda-host-device-constexpr) or
#pragma clang force_cuda_host_device.

Combined with strict checking for matching function target that comes
with D25809(r288962), it makes it hard to write code which would
explicitly instantiate or specialize some functions regardless of
pragmas or command line options in effect.

This patch changes the way we match target attributes of base template
vs attributes used in explicit instantiation or specialization so that
only explicitly specified attributes are considered. This makes base
template selection behave consistently regardless of pragma of command
line options that may affect CUDA target.

Differential Revision: https://reviews.llvm.org/D25845

llvm-svn: 289091
2016-12-08 19:38:13 +00:00
..
Inputs [CUDA] Do a better job at detecting wrong-side calls. 2016-10-08 01:07:11 +00:00
add-inline-in-definition.cu [CUDA] Use only the GVALinkage on function definitions. 2016-11-08 23:45:51 +00:00
addr-of-overloaded-fn.cu [CUDA] Add additional testcases for EraseUnwantedCUDAMatches. 2016-07-12 23:23:12 +00:00
alias.cu
amdgpu-attrs.cu [AMDGPU] Expose flat work group size, register and wave control attributes 2016-09-26 01:02:57 +00:00
asm-constraints-device.cu
asm-constraints-mixed.cu
attributes-on-non-cuda.cu
bad-attributes.cu [CUDA] Disallow __shared__ variables in host functions. 2016-10-13 18:45:13 +00:00
bad-calls-on-same-line.cu [CUDA] Simplify some repeated diagnostic expectations in CUDA tests. 2016-10-21 20:50:47 +00:00
builtins.cu NVPTX: Use the nvvm builtins to read SRegs rather than the legacy ptx ones 2016-07-07 16:41:08 +00:00
call-device-fn-from-host.cu [CUDA] Simplify some repeated diagnostic expectations in CUDA tests. 2016-10-21 20:50:47 +00:00
call-host-fn-from-device.cu [CUDA] Simplify some repeated diagnostic expectations in CUDA tests. 2016-10-21 20:50:47 +00:00
call-stack-for-deferred-err.cu [CUDA] When we emit an error that might have been deferred, also print a callstack. 2016-10-19 21:15:01 +00:00
config-type.cu
cuda-builtin-vars.cu [CUDA] Rename cuda_builtin_vars.h to __clang_cuda_builtin_vars.h. 2016-10-08 22:16:08 +00:00
cxx11-kernel-call.cu
device-var-init.cu [CUDA] Rework tests now that we emit deferred diagnostics during sema. Test-only change. 2016-10-19 00:06:49 +00:00
exceptions.cu [CUDA] When we emit an error that might have been deferred, also print a callstack. 2016-10-19 21:15:01 +00:00
extern-shared.cu [CUDA] Allow extern __shared__ on empty-length arrays. 2016-10-02 15:24:50 +00:00
function-overload.cu [CUDA] Improve target attribute checking for function templates. 2016-12-07 19:27:16 +00:00
function-target.cu
function-template-overload.cu [CUDA] Ignore implicit target attributes during function template instantiation. 2016-12-08 19:38:13 +00:00
global-initializers-host.cu [CUDA] Reject calls to __device__ functions from host variable global initializers. 2016-08-10 01:09:21 +00:00
gnu-inline.cu [CUDA] [AST] Allow isInlineDefinitionExternallyVisible to be called on functions without bodies. 2016-10-28 16:26:26 +00:00
host-device-constexpr.cu [CUDA] Make unattributed constexpr functions implicitly host+device. 2016-03-30 23:30:21 +00:00
implicit-copy.cu
implicit-device-lambda.cu [CUDA] Rework tests now that we emit deferred diagnostics during sema. Test-only change. 2016-10-19 00:06:49 +00:00
implicit-intrinsic.cu [CUDA] Remove three obsolete CUDA cc1 flags. 2016-03-29 16:24:16 +00:00
implicit-member-target-collision-cxx11.cu [CUDA] Remove three obsolete CUDA cc1 flags. 2016-03-29 16:24:16 +00:00
implicit-member-target-collision.cu
implicit-member-target.cu Add support for derived class special members hiding functions brought in from 2016-05-13 06:47:56 +00:00
kernel-call.cu
launch_bounds.cu
lit.local.cfg
method-target.cu [CUDA] Emit deferred diagnostics during Sema rather than during codegen. 2016-10-13 20:52:12 +00:00
no-call-stack-for-immediate-errs.cu [CUDA] When we emit an error that might have been deferred, also print a callstack. 2016-10-19 21:15:01 +00:00
no-destructor-overload.cu [CUDA] Disallow overloading destructors. 2016-10-03 16:48:23 +00:00
no-host-device-constexpr.cu [CUDA] Make unattributed constexpr functions implicitly host+device. 2016-03-30 23:30:21 +00:00
overloaded-delete.cu Declare H and H new/delete. 2016-10-21 20:34:05 +00:00
pr27778.cu [CUDA] Add implicit conversion of __launch_bounds__ arguments to rvalue. 2016-06-06 22:54:57 +00:00
qualifiers.cu
reference-to-kernel-fn.cu [CUDA] Emit deferred diagnostics during Sema rather than during codegen. 2016-10-13 20:52:12 +00:00
trace-through-global.cu [CUDA] Simplify some repeated diagnostic expectations in CUDA tests. 2016-10-21 20:50:47 +00:00
vararg.cu [CUDA] Don't allow templated variadic functions. 2016-03-22 22:06:19 +00:00
vla.cu [CUDA] Rework tests now that we emit deferred diagnostics during sema. Test-only change. 2016-10-19 00:06:49 +00:00