tra added a comment.

LGTM. You may want to wait a bit for Justin's feedback, in case he has some 
concerns.



================
Comment at: clang/test/SemaCUDA/function-overload.cu:406
+
+// Two irrelevant classes with `operator-` defined. One of them is device only.
+struct C1 { int m; };
----------------
I'd remove `irrelevant`.


================
Comment at: clang/test/SemaCUDA/function-overload.cu:407-411
+struct C1 { int m; };
+struct C2 { int *m; };
+__device__
+int operator-(const C1 &x, const C1 &y) { return x.m - y.m; }
+int operator-(const C2 &x, const C2 &y) { return x.m - y.m; }
----------------
We don't need definitions for `struct` and `operator-`;

This should do:
```
struct C1;
struct C2;
__device__ int operator-(const C1 &x, const C1 &y);
int operator-(const C2 &x, const C2 &y);
...
int test_constexpr_overload(C2 &x, C2 &y) {
    return constexpr_overload(x, y);
}
```



================
Comment at: clang/test/SemaCUDA/function-overload.cu:414
+template <typename T>
+constexpr int constexpr_overload(const T &x, const T &y) {
+  return x - y;
----------------
Is `constexpr` necessary here? If not, then we would not need -std=c++11 either.
I think you really want `__host__ __device__` here instead. `constexpr` is just 
applying the attributes implicitly.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D67730/new/

https://reviews.llvm.org/D67730



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

Reply via email to