diff options
| author | Justin Lebar <jlebar@google.com> | 2017-01-05 16:53:38 +0000 |
|---|---|---|
| committer | Justin Lebar <jlebar@google.com> | 2017-01-05 16:53:38 +0000 |
| commit | 86c4e63ff97466f4a4fec3ab79f4ae23d6289052 (patch) | |
| tree | 59e759c0dbfc817a790ef373181d9a7887027a9a /clang/lib/Basic/Targets.cpp | |
| parent | b6626593555ad2542c2d3800befa7c9d193032d1 (diff) | |
| download | bcm5719-llvm-86c4e63ff97466f4a4fec3ab79f4ae23d6289052.tar.gz bcm5719-llvm-86c4e63ff97466f4a4fec3ab79f4ae23d6289052.zip | |
[CUDA] Let NVPTX inherit the host's calling conventions.
Summary:
When compiling device code, we may still see host code with explicit
calling conventions. NVPTX needs to claim that it supports these CCs,
so that (a) we don't raise noisy warnings, and (b) we don't break
existing code which relies on the existence of these CCs when
specializing templates. (If a CC doesn't exist, clang ignores it, so
two template specializations which are different only insofar as one
specifies a CC are considered identical and therefore are an error if
that CC is not supported.)
Reviewers: tra
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D28323
llvm-svn: 291136
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
| -rw-r--r-- | clang/lib/Basic/Targets.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 4716b5e9b1c..4d2b3d00759 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -1962,6 +1962,16 @@ public: Opts.support("cl_khr_local_int32_base_atomics"); Opts.support("cl_khr_local_int32_extended_atomics"); } + + CallingConvCheckResult checkCallingConvention(CallingConv CC) const override { + // CUDA compilations support all of the host's calling conventions. + // + // TODO: We should warn if you apply a non-default CC to anything other than + // a host function. + if (HostTarget) + return HostTarget->checkCallingConvention(CC); + return CCCR_Warning; + } }; const Builtin::Info NVPTXTargetInfo::BuiltinInfo[] = { |

