[clang] [HLSL][DirectX] Add the Qdx-rootsignature-strip driver option (PR #154454)

Justin Bogner via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 25 09:32:35 PDT 2025


================
@@ -452,16 +482,25 @@ bool HLSLToolChain::requiresBinaryTranslation(DerivedArgList &Args) const {
   return Args.hasArg(options::OPT_metal) && Args.hasArg(options::OPT_dxc_Fo);
 }
 
+bool HLSLToolChain::requiresObjcopy(DerivedArgList &Args) const {
+  return Args.hasArg(options::OPT_dxc_Fo) &&
+         Args.hasArg(options::OPT_dxc_strip_rootsignature);
+}
+
 bool HLSLToolChain::isLastJob(DerivedArgList &Args,
                               Action::ActionClass AC) const {
   bool HasTranslation = requiresBinaryTranslation(Args);
   bool HasValidation = requiresValidation(Args);
+  bool HasObjcopy = requiresObjcopy(Args);
   // If translation and validation are not required, we should only have one
   // action.
-  if (!HasTranslation && !HasValidation)
+  if (!HasTranslation && !HasValidation && !HasObjcopy)
     return true;
   if ((HasTranslation && AC == Action::BinaryTranslatorJobClass) ||
-      (!HasTranslation && HasValidation && AC == Action::BinaryAnalyzeJobClass))
+      (!HasTranslation && HasValidation &&
+       AC == Action::BinaryAnalyzeJobClass) ||
+      (!HasTranslation && !HasValidation && HasObjcopy &&
+       AC == Action::ObjcopyJobClass))
     return true;
   return false;
----------------
bogner wrote:

This logic is getting a bit unweildy. Would it simplify things to work from the last job backwards? That is,
```c++
if (HasObjcopy)
  return AC == Action::ObjcopyJobClass;
if (HasValidation)
  return AC == Action::BinaryAnalyzeJobClass;
if (HasTranslation)
  return AC == Action::BinaryTranslatorJobClass;
// If none of translation, validation, or objcopy are required, we should only
// have one action
return true;

https://github.com/llvm/llvm-project/pull/154454


More information about the cfe-commits mailing list