tra added inline comments.

================
Comment at: lib/Sema/SemaCUDA.cpp:387
+  // each inference gets same result and not to add duplicate attributes.
+  auto addBothAttr = [=]() {
+    assert(MemberDecl->hasAttr<CUDAHostAttr>() ==
----------------
`addHDAttrIfNeeded` ? We may not even need it. See below.


================
Comment at: lib/Sema/SemaCUDA.cpp:388-409
+    assert(MemberDecl->hasAttr<CUDAHostAttr>() ==
+           MemberDecl->hasAttr<CUDADeviceAttr>());
+    if (!MemberDecl->hasAttr<CUDADeviceAttr>())
+      MemberDecl->addAttr(CUDADeviceAttr::CreateImplicit(Context));
+    if (!MemberDecl->hasAttr<CUDAHostAttr>())
+      MemberDecl->addAttr(CUDAHostAttr::CreateImplicit(Context));
+  };
----------------
Perhaps we can rearrange things a bit to make it easier to follow.

```
bool needsH = true, needsD=true;
if (has Value) {
   if (CFT_Device)
      needsH = false;
   if (CFT_Host)
      needsD = false;
}

// We either setting attributes first time, or the inferred ones must match 
previously set ones.
assert(!(hasAttr(D) || hasAttr(H)) 
    || (needsD == hasAttr(D) && (needsH == hasAttr(H)))
if (needsD && !hasAttr(D))
   addAttr(D);
if (needsH && ! hasAttr(H))
   addAttr(H);
```


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

https://reviews.llvm.org/D67509



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

Reply via email to