https://github.com/anutosh491 updated https://github.com/llvm/llvm-project/pull/132670
>From 6545414a97b6458333f399c7252ae55c88a42d62 Mon Sep 17 00:00:00 2001 From: anutosh491 <andersonbhat...@gmail.com> Date: Mon, 24 Mar 2025 10:09:59 +0530 Subject: [PATCH 1/2] Handle frontend options for clang-repl before calling executeAction --- clang/lib/Interpreter/Interpreter.cpp | 38 ++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/clang/lib/Interpreter/Interpreter.cpp b/clang/lib/Interpreter/Interpreter.cpp index fa4c1439c9261..5f48117dbf3b8 100644 --- a/clang/lib/Interpreter/Interpreter.cpp +++ b/clang/lib/Interpreter/Interpreter.cpp @@ -141,6 +141,37 @@ CreateCI(const llvm::opt::ArgStringList &Argv) { return std::move(Clang); } +static llvm::Error HandleFrontendOptions(const CompilerInstance &CI) { + const auto &FrontendOpts = CI.getFrontendOpts(); + + if (FrontendOpts.ShowHelp) { + driver::getDriverOptTable().printHelp( + llvm::outs(), "clang -cc1 [options] file...", + "LLVM 'Clang' Compiler: http://clang.llvm.org", + /*ShowHidden=*/false, /*ShowAllAliases=*/false, + llvm::opt::Visibility(driver::options::CC1Option)); + return llvm::createStringError(llvm::errc::not_supported, "Help displayed"); + } + + if (FrontendOpts.ShowVersion) { + llvm::cl::PrintVersionMessage(); + return llvm::createStringError(llvm::errc::not_supported, "Version displayed"); + } + + if (!FrontendOpts.LLVMArgs.empty()) { + unsigned NumArgs = FrontendOpts.LLVMArgs.size(); + auto Args = std::make_unique<const char*[]>(NumArgs + 2); + Args[0] = "clang-repl (LLVM option parsing)"; + for (unsigned i = 0; i != NumArgs; ++i) + Args[i + 1] = FrontendOpts.LLVMArgs[i].c_str(); + Args[NumArgs + 1] = nullptr; + llvm::errs() << "Parsing LLVM backend options via cl::ParseCommandLineOptions...\n"; + llvm::cl::ParseCommandLineOptions(NumArgs + 1, Args.get()); + } + + return llvm::Error::success(); +} + } // anonymous namespace namespace clang { @@ -451,7 +482,12 @@ const char *const Runtimes = R"( llvm::Expected<std::unique_ptr<Interpreter>> Interpreter::create(std::unique_ptr<CompilerInstance> CI) { - llvm::Error Err = llvm::Error::success(); + + llvm::Error Err = HandleFrontendOptions(*CI); + if (Err) { + return std::move(Err); + } + auto Interp = std::unique_ptr<Interpreter>(new Interpreter(std::move(CI), Err)); if (Err) >From fa4e295389e51da41b6b96baed099e739664b730 Mon Sep 17 00:00:00 2001 From: anutosh491 <andersonbhat...@gmail.com> Date: Mon, 24 Mar 2025 10:29:03 +0530 Subject: [PATCH 2/2] apply code formatting changes --- clang/lib/Interpreter/Interpreter.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/clang/lib/Interpreter/Interpreter.cpp b/clang/lib/Interpreter/Interpreter.cpp index 5f48117dbf3b8..3fbfd3c746bc7 100644 --- a/clang/lib/Interpreter/Interpreter.cpp +++ b/clang/lib/Interpreter/Interpreter.cpp @@ -155,17 +155,19 @@ static llvm::Error HandleFrontendOptions(const CompilerInstance &CI) { if (FrontendOpts.ShowVersion) { llvm::cl::PrintVersionMessage(); - return llvm::createStringError(llvm::errc::not_supported, "Version displayed"); + return llvm::createStringError(llvm::errc::not_supported, + "Version displayed"); } if (!FrontendOpts.LLVMArgs.empty()) { unsigned NumArgs = FrontendOpts.LLVMArgs.size(); - auto Args = std::make_unique<const char*[]>(NumArgs + 2); + auto Args = std::make_unique<const char *[]>(NumArgs + 2); Args[0] = "clang-repl (LLVM option parsing)"; for (unsigned i = 0; i != NumArgs; ++i) Args[i + 1] = FrontendOpts.LLVMArgs[i].c_str(); Args[NumArgs + 1] = nullptr; - llvm::errs() << "Parsing LLVM backend options via cl::ParseCommandLineOptions...\n"; + llvm::errs() + << "Parsing LLVM backend options via cl::ParseCommandLineOptions...\n"; llvm::cl::ParseCommandLineOptions(NumArgs + 1, Args.get()); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits