rsmith added a subscriber: rsmith.
rsmith added a comment.

I would much prefer for us to, say, provide a <complex> header that wraps the 
system one and does something like
  // <complex>
  #pragma clang cuda_implicit_host_device {
  #include_next <complex>
  #pragma clang cuda_implicit_host_device }

or to provide an explicit list of the functions that we're promoting to 
`__host__` `__device__`, or to require people to use a CUDA-compatible standard 
library if they want CUDA-compatible standard library behaviour.


================
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 CUDA device code to use definitions from <complex>, other 
than operator>> and operator<<.">;
 def cuda_path_EQ : Joined<["--"], "cuda-path=">, Group<i_Group>,
----------------
I don't think it's reasonable to have something this hacky / arbitrary in the 
stable Clang driver interface.

================
Comment at: lib/Sema/SemaCUDA.cpp:479-481
@@ +478,5 @@
+    return false;
+  StringRef Filename = FE->getName();
+  if (Filename != "complex" && !Filename.endswith("/complex"))
+    return false;
+
----------------
I don't think this works: the standard library might factor parts of <complex> 
out into separate header files. For instance, libstdc++ 4.4 includes the TR1 
pieces of <complex> in that way.


http://reviews.llvm.org/D18328



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to