diff --git a/clang/lib/Tooling/CommonOptionsParser.cpp b/clang/lib/Tooling/CommonOptionsParser.cpp --- a/clang/lib/Tooling/CommonOptionsParser.cpp +++ b/clang/lib/Tooling/CommonOptionsParser.cpp @@ -114,8 +114,24 @@ if (!ErrorMessage.empty()) ErrorMessage.append("\n"); llvm::raw_string_ostream OS(ErrorMessage); + + // Expand "-h" to "-help" so it's static handler can be used. + SmallVector NewArgv; + // Append options from command line. + bool SawDoubleDash = false; + for (int I = 0; I < argc; ++I) { + StringRef Arg(argv[I]); + if (Arg == "--") + SawDoubleDash = true; + if(!SawDoubleDash && Arg == "-h") + NewArgv.push_back("-help"); + else + NewArgv.push_back(argv[I]); + } + int NewArgc = static_cast(NewArgv.size()); + // Stop initializing if command-line option parsing failed. - if (!cl::ParseCommandLineOptions(argc, argv, Overview, &OS)) { + if (!cl::ParseCommandLineOptions(NewArgc, &NewArgv[0], Overview, &OS)) { OS.flush(); return llvm::make_error("[CommonOptionsParser]: " + ErrorMessage,