[OpenCL] Relax diagnostics on OpenCL access qualifiers
Summary:
Emit warning for multiple access qualifiers if they do not conflict.
Patch by Alexey Bader
Reviewers: Anastasia, yaxunl
Reviewed By: Anastasia
Subscribers: asavonic, bader, cfe-commits
Differential Revision: https://reviews.llvm.org/D51302
llvm-svn: 341553
diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp
index 488299a..65c636b 100644
--- a/clang/lib/Sema/SemaDeclAttr.cpp
+++ b/clang/lib/Sema/SemaDeclAttr.cpp
@@ -5900,10 +5900,16 @@
// Check if there is only one access qualifier.
if (D->hasAttr<OpenCLAccessAttr>()) {
- S.Diag(AL.getLoc(), diag::err_opencl_multiple_access_qualifiers)
- << D->getSourceRange();
- D->setInvalidDecl(true);
- return;
+ if (D->getAttr<OpenCLAccessAttr>()->getSemanticSpelling() ==
+ AL.getSemanticSpelling()) {
+ S.Diag(AL.getLoc(), diag::warn_duplicate_declspec)
+ << AL.getName()->getName() << AL.getRange();
+ } else {
+ S.Diag(AL.getLoc(), diag::err_opencl_multiple_access_qualifiers)
+ << D->getSourceRange();
+ D->setInvalidDecl(true);
+ return;
+ }
}
// OpenCL v2.0 s6.6 - read_write can be used for image types to specify that an