https://github.com/miguelcsx updated 
https://github.com/llvm/llvm-project/pull/145200

From 883345d337df982a87c55b11b3374cf661b7b49e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miguel=20C=C3=A1rdenas?= <miguele...@gmail.com>
Date: Sun, 22 Jun 2025 03:32:24 +0200
Subject: [PATCH 1/2] [clang][nvlink-wrapper] Add support for opt-remarks
 command line options

This patch adds support for optimization record command line options to
clang-nvlink-wrapper, fixing an issue where using -fsave-optimization-record
with CUDA offloading would fail with "Unknown command line argument
'opt-remarks-format=yaml'".
---
 .../ClangNVLinkWrapper.cpp                    | 20 +++++++++++++++----
 .../tools/clang-nvlink-wrapper/NVLinkOpts.td  | 19 ++++++++++++++++++
 2 files changed, 35 insertions(+), 4 deletions(-)

diff --git a/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp 
b/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp
index faf73a7c2f193..4e36a04e0286b 100644
--- a/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp
+++ b/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp
@@ -341,11 +341,23 @@ Expected<std::unique_ptr<lto::LTO>> createLTO(const 
ArgList &Args) {
   Conf.CPU = Args.getLastArgValue(OPT_arch);
   Conf.Options = codegen::InitTargetOptionsFromCodeGenFlags(Triple);
 
-  Conf.RemarksFilename = RemarksFilename;
-  Conf.RemarksPasses = RemarksPasses;
-  Conf.RemarksWithHotness = RemarksWithHotness;
+  if (auto *Arg = Args.getLastArg(OPT_opt_remarks_filename))
+    Conf.RemarksFilename = Arg->getValue();
+  else
+    Conf.RemarksFilename = RemarksFilename;
+  
+  if (auto *Arg = Args.getLastArg(OPT_opt_remarks_filter))
+    Conf.RemarksPasses = Arg->getValue();
+  else
+    Conf.RemarksPasses = RemarksPasses;
+  
+  if (auto *Arg = Args.getLastArg(OPT_opt_remarks_format))
+    Conf.RemarksFormat = Arg->getValue();
+  else
+    Conf.RemarksFormat = RemarksFormat;
+  
+  Conf.RemarksWithHotness = Args.hasArg(OPT_opt_remarks_with_hotness) || 
RemarksWithHotness;
   Conf.RemarksHotnessThreshold = RemarksHotnessThreshold;
-  Conf.RemarksFormat = RemarksFormat;
 
   Conf.MAttrs = llvm::codegen::getMAttrs();
   std::optional<CodeGenOptLevel> CGOptLevelOrNone =
diff --git a/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td 
b/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td
index 6de1a25c14f8b..a0f7dce5bf6b3 100644
--- a/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td
+++ b/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td
@@ -72,6 +72,25 @@ def : Joined<["--", "-"], "plugin-opt=emit-llvm">,
   Flags<[WrapperOnlyOption]>, Alias<lto_emit_llvm>;
 def : Joined<["--", "-"], "plugin-opt=emit-asm">,
   Flags<[WrapperOnlyOption]>, Alias<lto_emit_asm>;
+
+def opt_remarks_filename : Separate<["--"], "opt-remarks-filename">,
+  Flags<[WrapperOnlyOption]>, HelpText<"YAML output file for optimization 
remarks">;
+def opt_remarks_format : Separate<["--"], "opt-remarks-format">,
+  Flags<[WrapperOnlyOption]>, HelpText<"The format used for serializing 
remarks (default: YAML)">;
+def opt_remarks_filter : Separate<["--"], "opt-remarks-filter">, 
+  Flags<[WrapperOnlyOption]>, HelpText<"Regex for the passes that need to be 
serialized to the output file">;
+def opt_remarks_with_hotness : Flag<["--"], "opt-remarks-with-hotness">,
+  Flags<[WrapperOnlyOption]>, HelpText<"Include hotness information in the 
optimization remarks file">;
+
+def : Joined<["--", "-"], "plugin-opt=opt-remarks-filename=">,
+  Flags<[WrapperOnlyOption]>, Alias<opt_remarks_filename>;
+def : Joined<["--", "-"], "plugin-opt=opt-remarks-format=">,
+  Flags<[WrapperOnlyOption]>, Alias<opt_remarks_format>;
+def : Joined<["--", "-"], "plugin-opt=opt-remarks-filter=">,
+  Flags<[WrapperOnlyOption]>, Alias<opt_remarks_filter>;
+def : Flag<["--", "-"], "plugin-opt=opt-remarks-with-hotness">,
+  Flags<[WrapperOnlyOption]>, Alias<opt_remarks_with_hotness>;
+
 def plugin_opt : Joined<["--", "-"], "plugin-opt=">, 
Flags<[WrapperOnlyOption]>,
   HelpText<"Options passed to LLVM, not including the Clang invocation. Use "
            "'--plugin-opt=--help' for a list of options.">;

From f7805cf18c0408c7d182aaa8400e9c5cd3ed72d2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miguel=20C=C3=A1rdenas?= <miguele...@gmail.com>
Date: Sun, 22 Jun 2025 17:25:08 +0200
Subject: [PATCH 2/2] [clang][nvlink-wrapper] Modified tablegen option
 definitions

Convert alias definitions to proper option definitions for opt-remarks-*
options based on suggestions.
---
 .../clang-nvlink-wrapper/ClangNVLinkWrapper.cpp | 17 +++--------------
 clang/tools/clang-nvlink-wrapper/NVLinkOpts.td  | 17 ++++-------------
 2 files changed, 7 insertions(+), 27 deletions(-)

diff --git a/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp 
b/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp
index 4e36a04e0286b..cb17c89765c0a 100644
--- a/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp
+++ b/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp
@@ -341,20 +341,9 @@ Expected<std::unique_ptr<lto::LTO>> createLTO(const 
ArgList &Args) {
   Conf.CPU = Args.getLastArgValue(OPT_arch);
   Conf.Options = codegen::InitTargetOptionsFromCodeGenFlags(Triple);
 
-  if (auto *Arg = Args.getLastArg(OPT_opt_remarks_filename))
-    Conf.RemarksFilename = Arg->getValue();
-  else
-    Conf.RemarksFilename = RemarksFilename;
-  
-  if (auto *Arg = Args.getLastArg(OPT_opt_remarks_filter))
-    Conf.RemarksPasses = Arg->getValue();
-  else
-    Conf.RemarksPasses = RemarksPasses;
-  
-  if (auto *Arg = Args.getLastArg(OPT_opt_remarks_format))
-    Conf.RemarksFormat = Arg->getValue();
-  else
-    Conf.RemarksFormat = RemarksFormat;
+  Conf.RemarksFilename = Args.getLastArgValue(OPT_opt_remarks_filename, 
RemarksFilename);
+  Conf.RemarksPasses = Args.getLastArgValue(OPT_opt_remarks_filter, 
RemarksPasses);
+  Conf.RemarksFormat = Args.getLastArgValue(OPT_opt_remarks_format, 
RemarksFormat);
   
   Conf.RemarksWithHotness = Args.hasArg(OPT_opt_remarks_with_hotness) || 
RemarksWithHotness;
   Conf.RemarksHotnessThreshold = RemarksHotnessThreshold;
diff --git a/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td 
b/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td
index a0f7dce5bf6b3..7af35bf5989ec 100644
--- a/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td
+++ b/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td
@@ -73,24 +73,15 @@ def : Joined<["--", "-"], "plugin-opt=emit-llvm">,
 def : Joined<["--", "-"], "plugin-opt=emit-asm">,
   Flags<[WrapperOnlyOption]>, Alias<lto_emit_asm>;
 
-def opt_remarks_filename : Separate<["--"], "opt-remarks-filename">,
+def opt_remarks_filename : Joined<["--", "-"], 
"plugin-opt=opt-remarks-filename=">,
   Flags<[WrapperOnlyOption]>, HelpText<"YAML output file for optimization 
remarks">;
-def opt_remarks_format : Separate<["--"], "opt-remarks-format">,
+def opt_remarks_format : Joined<["--", "-"], "plugin-opt=opt-remarks-format=">,
   Flags<[WrapperOnlyOption]>, HelpText<"The format used for serializing 
remarks (default: YAML)">;
-def opt_remarks_filter : Separate<["--"], "opt-remarks-filter">, 
+def opt_remarks_filter : Joined<["--", "-"], 
"plugin-opt=opt-remarks-filter=">, 
   Flags<[WrapperOnlyOption]>, HelpText<"Regex for the passes that need to be 
serialized to the output file">;
-def opt_remarks_with_hotness : Flag<["--"], "opt-remarks-with-hotness">,
+def opt_remarks_with_hotness : Flag<["--", "-"], 
"plugin-opt=opt-remarks-with-hotness">,
   Flags<[WrapperOnlyOption]>, HelpText<"Include hotness information in the 
optimization remarks file">;
 
-def : Joined<["--", "-"], "plugin-opt=opt-remarks-filename=">,
-  Flags<[WrapperOnlyOption]>, Alias<opt_remarks_filename>;
-def : Joined<["--", "-"], "plugin-opt=opt-remarks-format=">,
-  Flags<[WrapperOnlyOption]>, Alias<opt_remarks_format>;
-def : Joined<["--", "-"], "plugin-opt=opt-remarks-filter=">,
-  Flags<[WrapperOnlyOption]>, Alias<opt_remarks_filter>;
-def : Flag<["--", "-"], "plugin-opt=opt-remarks-with-hotness">,
-  Flags<[WrapperOnlyOption]>, Alias<opt_remarks_with_hotness>;
-
 def plugin_opt : Joined<["--", "-"], "plugin-opt=">, 
Flags<[WrapperOnlyOption]>,
   HelpText<"Options passed to LLVM, not including the Clang invocation. Use "
            "'--plugin-opt=--help' for a list of options.">;

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to