[clang] 7a0fd97 - [NFC][CLANG] Rename duplicate loop attributes diagnostic functions (#75657)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Dec 15 20:09:24 PST 2023
Author: smanna12
Date: 2023-12-15T22:09:19-06:00
New Revision: 7a0fd97ac1094b9b1547c8d7b35e583d7387224d
URL: https://github.com/llvm/llvm-project/commit/7a0fd97ac1094b9b1547c8d7b35e583d7387224d
DIFF: https://github.com/llvm/llvm-project/commit/7a0fd97ac1094b9b1547c8d7b35e583d7387224d.diff
LOG: [NFC][CLANG] Rename duplicate loop attributes diagnostic functions (#75657)
This patch renames CheckForDuplicateCodeAlignAttrs() to
CheckForDuplicateLoopAttrs() and corresponding other functions that call
it to be used for other statement attributes in future.
Added:
Modified:
clang/include/clang/Sema/Sema.h
clang/lib/Sema/SemaStmtAttr.cpp
clang/lib/Sema/TreeTransform.h
Removed:
################################################################################
diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h
index 1d7b4c729ce84e..20228da15ade8f 100644
--- a/clang/include/clang/Sema/Sema.h
+++ b/clang/include/clang/Sema/Sema.h
@@ -2102,7 +2102,7 @@ class Sema final {
SourceLocation AttrLoc);
CodeAlignAttr *BuildCodeAlignAttr(const AttributeCommonInfo &CI, Expr *E);
- bool CheckRebuiltCodeAlignStmtAttributes(ArrayRef<const Attr *> Attrs);
+ bool CheckRebuiltStmtAttributes(ArrayRef<const Attr *> Attrs);
bool CheckQualifiedFunctionForTypeId(QualType T, SourceLocation Loc);
diff --git a/clang/lib/Sema/SemaStmtAttr.cpp b/clang/lib/Sema/SemaStmtAttr.cpp
index 0d0a7bcebab4e8..e6a4d3e63e4aa8 100644
--- a/clang/lib/Sema/SemaStmtAttr.cpp
+++ b/clang/lib/Sema/SemaStmtAttr.cpp
@@ -361,11 +361,10 @@ static Attr *handleCodeAlignAttr(Sema &S, Stmt *St, const ParsedAttr &A) {
}
// Diagnose non-identical duplicates as a 'conflicting' loop attributes
-// and suppress duplicate errors in cases where the two match for
-// [[clang::code_align()]] attribute.
-static void CheckForDuplicateCodeAlignAttrs(Sema &S,
- ArrayRef<const Attr *> Attrs) {
- auto FindFunc = [](const Attr *A) { return isa<const CodeAlignAttr>(A); };
+// and suppress duplicate errors in cases where the two match.
+template <typename LoopAttrT>
+static void CheckForDuplicateLoopAttrs(Sema &S, ArrayRef<const Attr *> Attrs) {
+ auto FindFunc = [](const Attr *A) { return isa<const LoopAttrT>(A); };
const auto *FirstItr = std::find_if(Attrs.begin(), Attrs.end(), FindFunc);
if (FirstItr == Attrs.end()) // no attributes found
@@ -375,7 +374,7 @@ static void CheckForDuplicateCodeAlignAttrs(Sema &S,
std::optional<llvm::APSInt> FirstValue;
const auto *CAFA =
- dyn_cast<ConstantExpr>(cast<CodeAlignAttr>(*FirstItr)->getAlignment());
+ dyn_cast<ConstantExpr>(cast<LoopAttrT>(*FirstItr)->getAlignment());
// Return early if first alignment expression is dependent (since we don't
// know what the effective size will be), and skip the loop entirely.
if (!CAFA)
@@ -383,8 +382,8 @@ static void CheckForDuplicateCodeAlignAttrs(Sema &S,
while (Attrs.end() != (LastFoundItr = std::find_if(LastFoundItr + 1,
Attrs.end(), FindFunc))) {
- const auto *CASA = dyn_cast<ConstantExpr>(
- cast<CodeAlignAttr>(*LastFoundItr)->getAlignment());
+ const auto *CASA =
+ dyn_cast<ConstantExpr>(cast<LoopAttrT>(*LastFoundItr)->getAlignment());
// If the value is dependent, we can not test anything.
if (!CASA)
return;
@@ -635,10 +634,10 @@ void Sema::ProcessStmtAttributes(Stmt *S, const ParsedAttributes &InAttrs,
}
CheckForIncompatibleAttributes(*this, OutAttrs);
- CheckForDuplicateCodeAlignAttrs(*this, OutAttrs);
+ CheckForDuplicateLoopAttrs<CodeAlignAttr>(*this, OutAttrs);
}
-bool Sema::CheckRebuiltCodeAlignStmtAttributes(ArrayRef<const Attr *> Attrs) {
- CheckForDuplicateCodeAlignAttrs(*this, Attrs);
+bool Sema::CheckRebuiltStmtAttributes(ArrayRef<const Attr *> Attrs) {
+ CheckForDuplicateLoopAttrs<CodeAlignAttr>(*this, Attrs);
return false;
}
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h
index 1ad843d0bf4e0c..7df5bf0cb71370 100644
--- a/clang/lib/Sema/TreeTransform.h
+++ b/clang/lib/Sema/TreeTransform.h
@@ -1378,7 +1378,7 @@ class TreeTransform {
StmtResult RebuildAttributedStmt(SourceLocation AttrLoc,
ArrayRef<const Attr *> Attrs,
Stmt *SubStmt) {
- if (SemaRef.CheckRebuiltCodeAlignStmtAttributes(Attrs))
+ if (SemaRef.CheckRebuiltStmtAttributes(Attrs))
return StmtError();
return SemaRef.BuildAttributedStmt(AttrLoc, Attrs, SubStmt);
}
More information about the cfe-commits
mailing list