ABataev added a comment.

Did you try instead fix the OMPDeclareTargetDeclAttr::getActiveAttr() function 
to make it look through all the declarations and return the attribute from the 
first found instead of adding a new attribute?



================
Comment at: clang/lib/Sema/SemaOpenMP.cpp:22993-22999
+  if (auto *CD = dyn_cast<NamedDecl>(ND->getCanonicalDecl())) {
+    if (!CD->hasAttr<OMPDeclareTargetDeclAttr>()) {
+      CD->addAttr(A);
+      if (ASTMutationListener *ML = Context.getASTMutationListener())
+        ML->DeclarationMarkedOpenMPDeclareTarget(CD, A);
+    }
+  }
----------------
Here it would be better to reconstruct the attribute and make it implicit 
attribute.


================
Comment at: clang/lib/Sema/SemaOpenMP.cpp:23105-23112
+        // If this was not a canonical definition we need to update it as well.
+        if (auto *CD = dyn_cast<NamedDecl>(D->getCanonicalDecl())) {
+          if (!CD->hasAttr<OMPDeclareTargetDeclAttr>()) {
+            CD->addAttr(A);
+            if (ASTMutationListener *ML = Context.getASTMutationListener())
+              ML->DeclarationMarkedOpenMPDeclareTarget(CD, A);
+          }
----------------
Here it would be better to reconstruct the attribute and make it implicit 
attribute


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D153369

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

Reply via email to