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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits