diff --git a/llvm/tools/llvm-ml/Opts.td b/llvm/tools/llvm-ml/Opts.td --- a/llvm/tools/llvm-ml/Opts.td +++ b/llvm/tools/llvm-ml/Opts.td @@ -7,6 +7,7 @@ class LLVMJoined : Joined<["--", "-"], name>; class LLVMJoinedOrSeparate : JoinedOrSeparate<["--", "-"], name>; class LLVMSeparate : Separate<["--", "-"], name>; +class LLVMCommaJoined : CommaJoined<["--", "-"], name>; def ml_Group : OptionGroup<"">, HelpText<"ML.EXE COMPATIBILITY OPTIONS">; @@ -31,6 +32,11 @@ HelpText<"Target platform (x86 or x86-64)">; def as_lex : LLVMFlag<"as-lex">, HelpText<"Lex tokens from a .asm file without assembling">; +def debug : LLVMFlag<"debug">, Flags<[HelpHidden]>, + HelpText<"Enable debug output">; +def debug_only : LLVMCommaJoined<"debug-only=">, Flags<[HelpHidden]>, + HelpText<"Enable a specific type of debug output (comma " + "separated list of types)">; def fatal_warnings : LLVMFlag<"fatal-warnings">, HelpText<"Treat warnings as errors">; def filetype : LLVMJoined<"filetype=">, Values<"obj,s,null">, diff --git a/llvm/tools/llvm-ml/llvm-ml.cpp b/llvm/tools/llvm-ml/llvm-ml.cpp --- a/llvm/tools/llvm-ml/llvm-ml.cpp +++ b/llvm/tools/llvm-ml/llvm-ml.cpp @@ -243,6 +243,13 @@ << "' option\n"; } + if (InputArgs.hasArg(OPT_debug)) { + DebugFlag = true; + } + for (auto *Arg : InputArgs.filtered(OPT_debug_only)) { + setCurrentDebugTypes(Arg->getValues().data(), Arg->getNumValues()); + } + if (InputArgs.hasArg(OPT_help)) { std::string Usage = llvm::formatv("{0} [ /options ] file", ProgName).str(); T.printHelp(outs(), Usage.c_str(), "LLVM MASM Assembler",