jlebar abandoned this revision.
jlebar marked 7 inline comments as done.
jlebar added a comment.
Okay, after much discussion, we've decided to go with --relaxed-constexpr
instead of this. I have a patch for that which seems to mostly work, will send
it out soon.
http://reviews.llvm.org/D18328
rsmith added inline comments.
Comment at: lib/Sema/SemaCUDA.cpp:464-465
@@ +463,4 @@
+// without passing -fcuda-allow-std-complex.
+// TODO: Output a nvcc-compat warning if you try to use a non-constexpr
function
+// from -- nvcc only lets you use constexpr functions.
+bool Sem
rsmith added inline comments.
Comment at: lib/Sema/SemaCUDA.cpp:479-481
@@ +478,5 @@
+return false;
+ StringRef Filename = FE->getName();
+ if (Filename != "complex" && !Filename.endswith("/complex"))
+return false;
+
jlebar wrote:
> rsmith wrote:
> > I
jlebar added inline comments.
Comment at: include/clang/Driver/Options.td:383-384
@@ -382,2 +382,4 @@
HelpText<"Enable device-side debug info generation. Disables ptxas
optimizations.">;
+def cuda_allow_std_complex : Flag<["--"], "cuda-allow-std-complex">,
+ HelpText<"Allow C
rsmith added inline comments.
Comment at: include/clang/Driver/Options.td:383-384
@@ -382,2 +382,4 @@
HelpText<"Enable device-side debug info generation. Disables ptxas
optimizations.">;
+def cuda_allow_std_complex : Flag<["--"], "cuda-allow-std-complex">,
+ HelpText<"Allow C
jlebar added inline comments.
Comment at: include/clang/Driver/Options.td:383-384
@@ -382,2 +382,4 @@
HelpText<"Enable device-side debug info generation. Disables ptxas
optimizations.">;
+def cuda_allow_std_complex : Flag<["--"], "cuda-allow-std-complex">,
+ HelpText<"Allow C
jlebar added inline comments.
Comment at: include/clang/Driver/Options.td:383-384
@@ -382,2 +382,4 @@
HelpText<"Enable device-side debug info generation. Disables ptxas
optimizations.">;
+def cuda_allow_std_complex : Flag<["--"], "cuda-allow-std-complex">,
+ HelpText<"Allow C
rnk added a comment.
In http://reviews.llvm.org/D18328#379824, @rsmith wrote:
> I would much prefer for us to, say, provide a header that wraps the
> system one and does something like
>
> //
> #pragma clang cuda_implicit_host_device {
> #include_next
> #pragma clang cuda_implicit_hos
jlebar added a comment.
Here are two other approaches we considered and rejected, for the record:
1. Copy-paste a implementation from e.g. libc++ into
__clang_cuda_runtime_wrapper.h, and edit it appropriately. Then #define the
real 's include guards.
Main problem with this is the obvious o
tra added a comment.
In http://reviews.llvm.org/D18328#379824, @rsmith wrote:
> I would much prefer for us to, say, provide a header that wraps the
> system one and does something like
>
> //
> #pragma clang cuda_implicit_host_device {
> #include_next
> #pragma clang cuda_implicit_hos
jlebar added a comment.
Thanks for the suggestions, Richard. I'm not sure any of them will work, but I
don't defend this patch as anything other than a hack, so if we can come up
with something that works for what we need to accomplish and is cleaner, that's
great.
In http://reviews.llvm.org/
rnk added inline comments.
Comment at: lib/Sema/SemaCUDA.cpp:474
@@ +473,3 @@
+ SourceLocation Loc = FD.getLocation();
+ if (!SM.isInSystemHeader(Loc))
+return false;
jlebar wrote:
> tra wrote:
> > Can C++ library headers ever be non-system? I.e. can someone
rsmith added a subscriber: rsmith.
rsmith added a comment.
I would much prefer for us to, say, provide a header that wraps the
system one and does something like
//
#pragma clang cuda_implicit_host_device {
#include_next
#pragma clang cuda_implicit_host_device }
or to provide an expl
jlebar added inline comments.
Comment at: lib/Sema/SemaCUDA.cpp:474
@@ +473,3 @@
+ SourceLocation Loc = FD.getLocation();
+ if (!SM.isInSystemHeader(Loc))
+return false;
tra wrote:
> Can C++ library headers ever be non-system? I.e. can someone use libc++ via
tra accepted this revision.
tra added a comment.
This revision is now accepted and ready to land.
One minor question, LGTM otherwise.
Comment at: lib/Sema/SemaCUDA.cpp:474
@@ +473,3 @@
+ SourceLocation Loc = FD.getLocation();
+ if (!SM.isInSystemHeader(Loc))
+return false;
jlebar created this revision.
jlebar added reviewers: tra, rnk.
jlebar added subscribers: cfe-commits, jhen.
clang --cuda-allow-std-complex translates into cc1
-fcuda-allow-std-complex. With this flag, we will mark all functions
inside within namespace std as host+device, other than
operator>> a
16 matches
Mail list logo