[clang] ce4c7a9 - [clang] Silence a false positive GCC -Wunused-but-set-parameter warning with constexpr

Martin Storsjö via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 31 04:57:44 PDT 2022


Author: Martin Storsjö
Date: 2022-08-31T14:55:44+03:00
New Revision: ce4c7a987fa3f255fa49570da4be1b9739815369

URL: https://github.com/llvm/llvm-project/commit/ce4c7a987fa3f255fa49570da4be1b9739815369
DIFF: https://github.com/llvm/llvm-project/commit/ce4c7a987fa3f255fa49570da4be1b9739815369.diff

LOG: [clang] Silence a false positive GCC -Wunused-but-set-parameter warning with constexpr

This fixes the following warning:

    In file included from ../tools/clang/lib/Tooling/Transformer/Transformer.cpp:9:
    ../tools/clang/include/clang/Tooling/Transformer/Transformer.h: In instantiation of ‘llvm::Error clang::tooling::detail::populateMetadata(const clang::transformer::RewriteRuleWith<MetadataT>&, size_t, const clang::ast_matchers::MatchFinder::MatchResult&, clang::tooling::TransformerResult<T>&) [with T = void; size_t = long unsigned int]’:
    ../tools/clang/include/clang/Tooling/Transformer/Transformer.h:179:34:   required from ‘void clang::tooling::detail::WithMetadataImpl<T>::onMatchImpl(const clang::ast_matchers::MatchFinder::MatchResult&) [with T = void]’
    ../tools/clang/include/clang/Tooling/Transformer/Transformer.h:156:8:   required from here
    ../tools/clang/include/clang/Tooling/Transformer/Transformer.h:120:25: warning: parameter ‘SelectedCase’ set but not used [-Wunused-but-set-parameter]
      120 |                  size_t SelectedCase,
          |                  ~~~~~~~^~~~~~~~~~~~

The issue is fixed in GCC 10 and later, but this silences the noisy
warning in older versions. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85827
for more details about the bug.

Differential Revision: https://reviews.llvm.org/D132920

Added: 
    

Modified: 
    clang/include/clang/Tooling/Transformer/Transformer.h

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/Tooling/Transformer/Transformer.h b/clang/include/clang/Tooling/Transformer/Transformer.h
index 23683bfb8603..71b1fe81b951 100644
--- a/clang/include/clang/Tooling/Transformer/Transformer.h
+++ b/clang/include/clang/Tooling/Transformer/Transformer.h
@@ -120,6 +120,11 @@ populateMetadata(const transformer::RewriteRuleWith<T> &Rule,
                  size_t SelectedCase,
                  const ast_matchers::MatchFinder::MatchResult &Match,
                  TransformerResult<T> &Result) {
+  // Silence a false positive GCC -Wunused-but-set-parameter warning in constexpr
+  // cases, by marking SelectedCase as used. See
+  // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85827 for details. The issue is
+  // fixed in GCC 10.
+  (void)SelectedCase;
   if constexpr (!std::is_void_v<T>) {
     auto Metadata = Rule.Metadata[SelectedCase]->eval(Match);
     if (!Metadata)


        


More information about the cfe-commits mailing list