[clang] [NFC][CLANG] Rename duplicate loop attributes diagnostic functions (PR #75657)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Dec 15 13:21:13 PST 2023
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: None (smanna12)
<details>
<summary>Changes</summary>
This patch renames CheckForDuplicateCodeAlignAttrs() to CheckForDuplicateLoopAttrs() and corresponding other functions that call it to be used for other statement attributes in future.
---
Full diff: https://github.com/llvm/llvm-project/pull/75657.diff
3 Files Affected:
- (modified) clang/include/clang/Sema/Sema.h (+1-1)
- (modified) clang/lib/Sema/SemaStmtAttr.cpp (+9-9)
- (modified) clang/lib/Sema/TreeTransform.h (+1-1)
``````````diff
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..a7f6ba4d7abf04 100644
--- a/clang/lib/Sema/SemaStmtAttr.cpp
+++ b/clang/lib/Sema/SemaStmtAttr.cpp
@@ -361,11 +361,11 @@ 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,
+// 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 CodeAlignAttr>(A); };
+ 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 +375,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)
@@ -384,7 +384,7 @@ 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());
+ cast<LoopAttrT>(*LastFoundItr)->getAlignment());
// If the value is dependent, we can not test anything.
if (!CASA)
return;
@@ -635,10 +635,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);
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/75657
More information about the cfe-commits
mailing list