diff options
Diffstat (limited to 'llvm/tools/llvm-dwp/llvm-dwp.cpp')
-rw-r--r-- | llvm/tools/llvm-dwp/llvm-dwp.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/llvm/tools/llvm-dwp/llvm-dwp.cpp b/llvm/tools/llvm-dwp/llvm-dwp.cpp index f976298..5cd4c00 100644 --- a/llvm/tools/llvm-dwp/llvm-dwp.cpp +++ b/llvm/tools/llvm-dwp/llvm-dwp.cpp @@ -71,7 +71,7 @@ public: // Options static std::vector<std::string> ExecFilenames; static std::string OutputFilename; -static bool ContinueOnCuIndexOverflow; +static std::string ContinueOption; static Expected<SmallVector<std::string, 16>> getDWOFilenames(StringRef ExecFilename) { @@ -125,6 +125,7 @@ int llvm_dwp_main(int argc, char **argv, const llvm::ToolContext &) { DwpOptTable Tbl; llvm::BumpPtrAllocator A; llvm::StringSaver Saver{A}; + OnCuIndexOverflow OverflowOptValue = OnCuIndexOverflow::HardStop; opt::InputArgList Args = Tbl.parseArgs(argc, argv, OPT_UNKNOWN, Saver, [&](StringRef Msg) { llvm::errs() << Msg << '\n'; @@ -143,7 +144,15 @@ int llvm_dwp_main(int argc, char **argv, const llvm::ToolContext &) { } OutputFilename = Args.getLastArgValue(OPT_outputFileName, ""); - ContinueOnCuIndexOverflow = Args.hasArg(OPT_continueOnCuIndexOverflow); + if (Args.hasArg(OPT_continueOnCuIndexOverflow)) { + ContinueOption = + Args.getLastArgValue(OPT_continueOnCuIndexOverflow, "continue"); + if (ContinueOption == "soft-stop") { + OverflowOptValue = OnCuIndexOverflow::SoftStop; + } else { + OverflowOptValue = OnCuIndexOverflow::Continue; + } + } for (const llvm::opt::Arg *A : Args.filtered(OPT_execFileNames)) ExecFilenames.emplace_back(A->getValue()); @@ -255,7 +264,7 @@ int llvm_dwp_main(int argc, char **argv, const llvm::ToolContext &) { if (!MS) return error("no object streamer for target " + TripleName, Context); - if (auto Err = write(*MS, DWOFilenames, ContinueOnCuIndexOverflow)) { + if (auto Err = write(*MS, DWOFilenames, OverflowOptValue)) { logAllUnhandledErrors(std::move(Err), WithColor::error()); return 1; } |