[PATCH] D142181: [OptTable] Store llvm::cl::Option into a DenseMap instead of a StringMap

Nikita Popov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 20 01:38:15 PST 2023


nikic added a comment.

Makes sense to me.

>From pre-merge checks:

  FAILED: tools/clang/tools/clang-refactor/CMakeFiles/clang-refactor.dir/ClangRefactor.cpp.o
  CCACHE_CPP2=yes CCACHE_HASHDIR=yes /usr/bin/ccache /usr/bin/clang++ -DBUILD_EXAMPLES -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Itools/clang/tools/clang-refactor -I/var/lib/buildkite-agent/builds/llvm-project/clang/tools/clang-refactor -I/var/lib/buildkite-agent/builds/llvm-project/clang/include -Itools/clang/include -Iinclude -I/var/lib/buildkite-agent/builds/llvm-project/llvm/include -gmlt -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O3 -DNDEBUG  -fno-exceptions -fno-rtti -UNDEBUG -std=c++17 -MD -MT tools/clang/tools/clang-refactor/CMakeFiles/clang-refactor.dir/ClangRefactor.cpp.o -MF tools/clang/tools/clang-refactor/CMakeFiles/clang-refactor.dir/ClangRefactor.cpp.o.d -o tools/clang/tools/clang-refactor/CMakeFiles/clang-refactor.dir/ClangRefactor.cpp.o -c /var/lib/buildkite-agent/builds/llvm-project/clang/tools/clang-refactor/ClangRefactor.cpp
  In file included from /var/lib/buildkite-agent/builds/llvm-project/clang/tools/clang-refactor/ClangRefactor.cpp:16:
  In file included from /var/lib/buildkite-agent/builds/llvm-project/clang/include/clang/Frontend/CommandLineSourceLoc.h:18:
  /var/lib/buildkite-agent/builds/llvm-project/llvm/include/llvm/Support/CommandLine.h:1254:66: error: no member named 'apply' in 'llvm::StringRef'
    template <class Opt> static void opt(const Mod &M, Opt &O) { M.apply(O); }
                                                                 ~ ^
  /var/lib/buildkite-agent/builds/llvm-project/llvm/include/llvm/Support/CommandLine.h:1302:20: note: in instantiation of function template specialization 'llvm::cl::applicator<llvm::StringRef>::opt<llvm::cl::opt<std::string>>' requested here
    applicator<Mod>::opt(M, *O);
                     ^
  /var/lib/buildkite-agent/builds/llvm-project/llvm/include/llvm/Support/CommandLine.h:1494:5: note: in instantiation of function template specialization 'llvm::cl::apply<llvm::cl::opt<std::string>, llvm::StringRef, llvm::cl::desc, llvm::cl::NumOccurrencesFlag, llvm::cl::cat, llvm::cl::sub>' requested here
      apply(this, Ms...);
      ^
  /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/unique_ptr.h:962:34: note: in instantiation of function template specialization 'llvm::cl::opt<std::basic_string<char>, false>::opt<llvm::StringRef, llvm::cl::desc, llvm::cl::NumOccurrencesFlag, llvm::cl::cat, llvm::cl::sub>' requested here
      { return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); }
                                   ^
  /var/lib/buildkite-agent/builds/llvm-project/clang/tools/clang-refactor/ClangRefactor.cpp:242:17: note: in instantiation of function template specialization 'std::make_unique<llvm::cl::opt<std::string>, llvm::StringRef, llvm::cl::desc, llvm::cl::NumOccurrencesFlag, llvm::cl::cat, llvm::cl::sub>' requested here
      return std::make_unique<cl::opt<T>>(
                  ^
  /var/lib/buildkite-agent/builds/llvm-project/clang/tools/clang-refactor/ClangRefactor.cpp:231:36: note: in instantiation of function template specialization '(anonymous namespace)::CommandLineRefactoringOptionCreator::create<std::basic_string<char>>' requested here
        Options.addStringOption(Opt, create<std::string>(Opt));
                                     ^
  1 error generated.



================
Comment at: llvm/lib/Support/CommandLine.cpp:591
+                                                     ie = OptionsMap.end();
        it != ie; ++it) {
     Option *O = it->second;
----------------
Can probably use range based loop here and avoid naming the type altogether.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D142181/new/

https://reviews.llvm.org/D142181



More information about the llvm-commits mailing list