[clang-tools-extra] c7ec86b - [clang-tidy] Fix g++ -DCMAKE_CXX_STANDARD=17 build
Fangrui Song via cfe-commits
cfe-commits at lists.llvm.org
Sat Aug 6 16:12:30 PDT 2022
Author: Fangrui Song
Date: 2022-08-06T23:12:18Z
New Revision: c7ec86b13c461f6a8ce11f8443c1b6242013d26f
URL: https://github.com/llvm/llvm-project/commit/c7ec86b13c461f6a8ce11f8443c1b6242013d26f
DIFF: https://github.com/llvm/llvm-project/commit/c7ec86b13c461f6a8ce11f8443c1b6242013d26f.diff
LOG: [clang-tidy] Fix g++ -DCMAKE_CXX_STANDARD=17 build
`constexpr std::initializer_list<llvm::StringRef>` leads to
```
error: modification of '<temporary>' is not a constant expression
```
Related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102921
Added:
Modified:
clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.cpp
clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.h
Removed:
################################################################################
diff --git a/clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.cpp
index dcc01589f1162..132fbf85c1fe6 100644
--- a/clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.cpp
@@ -13,7 +13,7 @@
// This is the minimal set of safe functions.
// https://wiki.sei.cmu.edu/confluence/display/c/SIG30-C.+Call+only+asynchronous-safe+functions+within+signal+handlers
-constexpr std::initializer_list<llvm::StringRef> MinimalConformingFunctions = {
+constexpr llvm::StringLiteral MinimalConformingFunctions[] = {
"signal", "abort", "_Exit", "quick_exit"};
// The POSIX-defined set of safe functions.
@@ -22,7 +22,7 @@ constexpr std::initializer_list<llvm::StringRef> MinimalConformingFunctions = {
// mentioned POSIX specification was not updated after 'quick_exit' appeared
// in the C11 standard.
// Also, we want to keep the "minimal set" a subset of the "POSIX set".
-constexpr std::initializer_list<llvm::StringRef> POSIXConformingFunctions = {
+constexpr llvm::StringLiteral POSIXConformingFunctions[] = {
"_Exit",
"_exit",
"abort",
@@ -300,12 +300,16 @@ AST_MATCHER(FunctionDecl, isStandardFunction) {
SignalHandlerCheck::SignalHandlerCheck(StringRef Name,
ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
- AsyncSafeFunctionSet(
- Options.get("AsyncSafeFunctionSet", AsyncSafeFunctionSetKind::POSIX)),
- ConformingFunctions(AsyncSafeFunctionSet ==
- AsyncSafeFunctionSetKind::Minimal
- ? MinimalConformingFunctions
- : POSIXConformingFunctions) {}
+ AsyncSafeFunctionSet(Options.get("AsyncSafeFunctionSet",
+ AsyncSafeFunctionSetKind::POSIX)) {
+ if (AsyncSafeFunctionSet == AsyncSafeFunctionSetKind::Minimal) {
+ for (StringRef v : MinimalConformingFunctions)
+ ConformingFunctions.insert(v);
+ } else {
+ for (StringRef v : POSIXConformingFunctions)
+ ConformingFunctions.insert(v);
+ }
+}
void SignalHandlerCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
Options.store(Opts, "AsyncSafeFunctionSet", AsyncSafeFunctionSet);
diff --git a/clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.h b/clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.h
index 182afd717baec..01b63614163c1 100644
--- a/clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.h
+++ b/clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.h
@@ -60,7 +60,7 @@ class SignalHandlerCheck : public ClangTidyCheck {
clang::CallGraph CG;
AsyncSafeFunctionSetKind AsyncSafeFunctionSet;
- const llvm::StringSet<> ConformingFunctions;
+ llvm::StringSet<> ConformingFunctions;
};
} // namespace bugprone
More information about the cfe-commits
mailing list