https://github.com/inbelic created 
https://github.com/llvm/llvm-project/pull/152196

This pr adds the `Qdx-rootsignature-strip` to the `Clang` and `CC1` driver 
options.
It also adds `Qstrip-rootsignature` as the DXC compatible alias.

It implements this by storing the flag information as part of the named 
`dx.rootsignature` metadata as the first operand. This allows us to contain all 
root signature associated metadata field in a single node. Given the nature of 
its construction this will also be easily extendible to any other root 
signature specific metadata in the future.

The other option is to have a separate named metadata like 
`dx.striprootsignature`, similar to `dx.resmayalias`. But this becomes 
significantly less handy if any more options are added.

Relevant added tests are:

- `clang/test/CodeGenHLSL/dx-rootsignature-strip.hlsl`
- `clang/test/Driver/dxc_Qstrip-rootsignature.hlsl`
- `llvm/test/Analysis/DXILMetadataAnalysis/keep-rootsignature.ll`
- `llvm/test/Analysis/DXILMetadataAnalysis/strip-rootsignature.ll`
- `llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Stripped.ll`

All other test modifications are just to account for changes in metadata format.

Resolves: https://github.com/llvm/llvm-project/issues/150275.

>From 02b8f23fb7a8146a1aaa02d162b4dbcf8a92b43a Mon Sep 17 00:00:00 2001
From: Finn Plummer <canadienf...@gmail.com>
Date: Tue, 5 Aug 2025 17:32:38 +0000
Subject: [PATCH 1/5] [HLSL] Add the `Qdx-rootsignature-strip` driver option

- adds the driver option to the `Clang` and `CC1` driver options
- adds the DXC compatible `Qstrip-rootsignature` driver option as an
alias
---
 clang/include/clang/Basic/CodeGenOptions.def  |  3 +++
 clang/include/clang/Driver/Options.td         | 10 ++++++++
 clang/lib/Driver/ToolChains/Clang.cpp         | 24 +++++++++----------
 clang/lib/Driver/ToolChains/HLSL.cpp          |  6 +++++
 .../CodeGenHLSL/dx-rootsignature-strip.hlsl   | 15 ++++++++++++
 .../test/Driver/dxc_Qstrip-rootsignature.hlsl | 17 +++++++++++++
 6 files changed, 63 insertions(+), 12 deletions(-)
 create mode 100644 clang/test/CodeGenHLSL/dx-rootsignature-strip.hlsl
 create mode 100644 clang/test/Driver/dxc_Qstrip-rootsignature.hlsl

diff --git a/clang/include/clang/Basic/CodeGenOptions.def 
b/clang/include/clang/Basic/CodeGenOptions.def
index e137738102544..6411d71633fd2 100644
--- a/clang/include/clang/Basic/CodeGenOptions.def
+++ b/clang/include/clang/Basic/CodeGenOptions.def
@@ -478,6 +478,9 @@ CODEGENOPT(StaticClosure, 1, 0, Benign)
 /// Assume that UAVs/SRVs may alias
 CODEGENOPT(ResMayAlias, 1, 0, Benign)
 
+/// Omit the root signature from produced DXContainer
+CODEGENOPT(HLSLRootSigStrip, 1, 0, Benign)
+
 /// Controls how unwind v2 (epilog) information should be generated for x64
 /// Windows.
 ENUM_CODEGENOPT(WinX64EHUnwindV2, WinX64EHUnwindV2Mode,
diff --git a/clang/include/clang/Driver/Options.td 
b/clang/include/clang/Driver/Options.td
index 916400efdb449..a27d143f3216c 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -9354,6 +9354,16 @@ def res_may_alias : Option<["/", "-"], "res-may-alias", 
KIND_FLAG>,
   Visibility<[DXCOption, ClangOption, CC1Option]>,
   HelpText<"Assume that UAVs/SRVs may alias">,
   MarshallingInfoFlag<CodeGenOpts<"ResMayAlias">>;
+def Qdx_rootsignature_strip : Option<["-"], "Qdx-rootsignature-strip", 
KIND_FLAG>,
+  Group<dxc_Group>,
+  Visibility<[ClangOption, CC1Option]>,
+  HelpText<"Omit the root signature from produced DXContainer">,
+  MarshallingInfoFlag<CodeGenOpts<"HLSLRootSigStrip">>;
+def dxc_Qstrip_rootsignature :
+  Option<["/", "-"], "Qstrip-rootsignature", KIND_FLAG>,
+  Alias<Qdx_rootsignature_strip>,
+  Group<dxc_Group>,
+  Visibility<[DXCOption]>;
 def target_profile : DXCJoinedOrSeparate<"T">, MetaVarName<"<profile>">,
   HelpText<"Set target profile">,
   Values<"ps_6_0, ps_6_1, ps_6_2, ps_6_3, ps_6_4, ps_6_5, ps_6_6, ps_6_7,"
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index 7d0c142ecd061..07dc985c210b1 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -3790,18 +3790,18 @@ static void RenderOpenCLOptions(const ArgList &Args, 
ArgStringList &CmdArgs,
 
 static void RenderHLSLOptions(const ArgList &Args, ArgStringList &CmdArgs,
                               types::ID InputType) {
-  const unsigned ForwardedArguments[] = {
-      options::OPT_dxil_validator_version,
-      options::OPT_res_may_alias,
-      options::OPT_D,
-      options::OPT_I,
-      options::OPT_O,
-      options::OPT_emit_llvm,
-      options::OPT_emit_obj,
-      options::OPT_disable_llvm_passes,
-      options::OPT_fnative_half_type,
-      options::OPT_hlsl_entrypoint,
-      options::OPT_fdx_rootsignature_version};
+  const unsigned ForwardedArguments[] = {options::OPT_dxil_validator_version,
+                                         options::OPT_res_may_alias,
+                                         options::OPT_D,
+                                         options::OPT_I,
+                                         options::OPT_O,
+                                         options::OPT_emit_llvm,
+                                         options::OPT_emit_obj,
+                                         options::OPT_disable_llvm_passes,
+                                         options::OPT_fnative_half_type,
+                                         options::OPT_hlsl_entrypoint,
+                                         
options::OPT_fdx_rootsignature_version,
+                                         options::OPT_Qdx_rootsignature_strip};
   if (!types::isHLSL(InputType))
     return;
   for (const auto &Arg : ForwardedArguments)
diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp 
b/clang/lib/Driver/ToolChains/HLSL.cpp
index 38f4643abad98..d4e175b8faa53 100644
--- a/clang/lib/Driver/ToolChains/HLSL.cpp
+++ b/clang/lib/Driver/ToolChains/HLSL.cpp
@@ -304,6 +304,12 @@ HLSLToolChain::TranslateArgs(const DerivedArgList &Args, 
StringRef BoundArch,
       A->claim();
       continue;
     }
+    if (A->getOption().getID() == options::OPT_dxc_Qstrip_rootsignature) {
+      DAL->AddFlagArg(nullptr,
+                      Opts.getOption(options::OPT_Qdx_rootsignature_strip));
+      A->claim();
+      continue;
+    }
     if (A->getOption().getID() == options::OPT__SLASH_O) {
       StringRef OStr = A->getValue();
       if (OStr == "d") {
diff --git a/clang/test/CodeGenHLSL/dx-rootsignature-strip.hlsl 
b/clang/test/CodeGenHLSL/dx-rootsignature-strip.hlsl
new file mode 100644
index 0000000000000..c8b34ec6e1c00
--- /dev/null
+++ b/clang/test/CodeGenHLSL/dx-rootsignature-strip.hlsl
@@ -0,0 +1,15 @@
+// RUN: %clang_cc1 -Qdx-rootsignature-strip -triple 
dxil-pc-shadermodel6.3-compute -emit-llvm %s -o - | FileCheck %s 
--check-prefixes=CHECK,FLAG
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-compute -emit-llvm %s -o - | 
FileCheck %s --check-prefixes=CHECK,NOFLAG
+
+// CHECK: !dx.rootsignatures = !{![[#LOWER_INFO:]], ![[#EMPTY_ENTRY:]]}
+// FLAG: ![[#LOWER_INFO]] = !{i1 true}
+// NOFLAG: ![[#LOWER_INFO]] = !{i1 false}
+
+// Ensure root signature metadata is still generated in either case
+// CHECK: ![[#EMPTY_ENTRY]] = !{ptr @EmptyEntry, ![[#EMPTY:]], i32 2}
+// CHECK: ![[#EMPTY]] = !{}
+
+[shader("compute"), RootSignature("")]
+[numthreads(1,1,1)]
+void EmptyEntry() {}
+
diff --git a/clang/test/Driver/dxc_Qstrip-rootsignature.hlsl 
b/clang/test/Driver/dxc_Qstrip-rootsignature.hlsl
new file mode 100644
index 0000000000000..dc38a646ce444
--- /dev/null
+++ b/clang/test/Driver/dxc_Qstrip-rootsignature.hlsl
@@ -0,0 +1,17 @@
+// RUN: %clang_dxc -Qstrip-rootsignature -T cs_6_3 -HV 202x -Vd -Xclang 
-emit-llvm %s | FileCheck %s --check-prefixes=CHECK,FLAG
+// RUN: %clang_dxc -T cs_6_3 -HV 202x -Vd -Xclang -emit-llvm %s | FileCheck %s 
--check-prefixes=CHECK,NOFLAG
+
+// Test to demonstrate that we can specify when to strip the root signature
+// in its metadata
+
+// CHECK: !dx.rootsignatures = !{![[#LOWER_INFO:]], ![[#EMPTY_ENTRY:]]}
+// FLAG: ![[#LOWER_INFO]] = !{i1 true}
+// NOFLAG: ![[#LOWER_INFO]] = !{i1 false}
+
+// Ensure root signature metadata is still generated in either case
+// CHECK: ![[#EMPTY_ENTRY]] = !{ptr @EmptyEntry, ![[#EMPTY:]], i32 2}
+// CHECK: ![[#EMPTY]] = !{}
+
+[shader("compute"), RootSignature("")]
+[numthreads(1,1,1)]
+void EmptyEntry() {}

>From ef5bada0cdf7803d63f0c961144ea839041b45af Mon Sep 17 00:00:00 2001
From: Finn Plummer <canadienf...@gmail.com>
Date: Tue, 5 Aug 2025 17:37:14 +0000
Subject: [PATCH 2/5] [DirectX] Store `StripRootSignature` as metadata on
 `dx.rootsignatures`

- this commit proposes to store the metadata information as the first
operand of the named `dx.rootsignature` metadata
---
 clang/lib/CodeGen/CGHLSLRuntime.cpp           | 15 +++++++--
 .../llvm/Analysis/DXILMetadataAnalysis.h      |  1 +
 llvm/lib/Analysis/DXILMetadataAnalysis.cpp    | 13 ++++++++
 .../lib/Target/DirectX/DXContainerGlobals.cpp |  4 +++
 llvm/lib/Target/DirectX/DXILRootSignature.cpp | 11 ++++++-
 .../keep-rootsignature.ll                     | 24 ++++++++++++++
 .../strip-rootsignature.ll                    | 25 +++++++++++++++
 .../ContainerData/RootSignature-Stripped.ll   | 31 +++++++++++++++++++
 8 files changed, 120 insertions(+), 4 deletions(-)
 create mode 100644 
llvm/test/Analysis/DXILMetadataAnalysis/keep-rootsignature.ll
 create mode 100644 
llvm/test/Analysis/DXILMetadataAnalysis/strip-rootsignature.ll
 create mode 100644 
llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Stripped.ll

diff --git a/clang/lib/CodeGen/CGHLSLRuntime.cpp 
b/clang/lib/CodeGen/CGHLSLRuntime.cpp
index a47d1cc22980d..0e9061e1a27f2 100644
--- a/clang/lib/CodeGen/CGHLSLRuntime.cpp
+++ b/clang/lib/CodeGen/CGHLSLRuntime.cpp
@@ -68,7 +68,8 @@ void addDxilValVersion(StringRef ValVersionStr, llvm::Module 
&M) {
 
 void addRootSignature(llvm::dxbc::RootSignatureVersion RootSigVer,
                       ArrayRef<llvm::hlsl::rootsig::RootElement> Elements,
-                      llvm::Function *Fn, llvm::Module &M) {
+                      llvm::Function *Fn, llvm::Module &M,
+                      bool StripRootSignature) {
   auto &Ctx = M.getContext();
 
   llvm::hlsl::rootsig::MetadataBuilder RSBuilder(Ctx, Elements);
@@ -80,7 +81,14 @@ void addRootSignature(llvm::dxbc::RootSignatureVersion 
RootSigVer,
       MDNode::get(Ctx, {ValueAsMetadata::get(Fn), RootSignature, Version});
 
   StringRef RootSignatureValKey = "dx.rootsignatures";
-  auto *RootSignatureValMD = M.getOrInsertNamedMetadata(RootSignatureValKey);
+  NamedMDNode *RootSignatureValMD = M.getNamedMetadata(RootSignatureValKey);
+  if (!RootSignatureValMD) {
+    IRBuilder<> Builder(Ctx);
+    RootSignatureValMD = M.getOrInsertNamedMetadata(RootSignatureValKey);
+    MDNode *InfoMD = MDNode::get(
+        Ctx, {ConstantAsMetadata::get(Builder.getInt1(StripRootSignature))});
+    RootSignatureValMD->addOperand(InfoMD);
+  }
   RootSignatureValMD->addOperand(MDVals);
 }
 
@@ -479,11 +487,12 @@ void CGHLSLRuntime::emitEntryFunction(const FunctionDecl 
*FD,
   B.CreateRetVoid();
 
   // Add and identify root signature to function, if applicable
+  auto &CodeGenOpts = CGM.getCodeGenOpts();
   for (const Attr *Attr : FD->getAttrs()) {
     if (const auto *RSAttr = dyn_cast<RootSignatureAttr>(Attr)) {
       auto *RSDecl = RSAttr->getSignatureDecl();
       addRootSignature(RSDecl->getVersion(), RSDecl->getRootElements(), 
EntryFn,
-                       M);
+                       M, CodeGenOpts.HLSLRootSigStrip);
     }
   }
 }
diff --git a/llvm/include/llvm/Analysis/DXILMetadataAnalysis.h 
b/llvm/include/llvm/Analysis/DXILMetadataAnalysis.h
index cb535ac14f1c6..be894ec39ed5a 100644
--- a/llvm/include/llvm/Analysis/DXILMetadataAnalysis.h
+++ b/llvm/include/llvm/Analysis/DXILMetadataAnalysis.h
@@ -37,6 +37,7 @@ struct ModuleMetadataInfo {
   Triple::EnvironmentType ShaderProfile{Triple::UnknownEnvironment};
   VersionTuple ValidatorVersion{};
   SmallVector<EntryProperties> EntryPropertyVec{};
+  bool StripRootSignature{true};
   void print(raw_ostream &OS) const;
 };
 
diff --git a/llvm/lib/Analysis/DXILMetadataAnalysis.cpp 
b/llvm/lib/Analysis/DXILMetadataAnalysis.cpp
index 23f1aa82ae8a3..63868d26d2316 100644
--- a/llvm/lib/Analysis/DXILMetadataAnalysis.cpp
+++ b/llvm/lib/Analysis/DXILMetadataAnalysis.cpp
@@ -68,6 +68,18 @@ static ModuleMetadataInfo collectMetadataInfo(Module &M) {
     }
     MMDAI.EntryPropertyVec.push_back(EFP);
   }
+  NamedMDNode *RootSignaturesNode = M.getNamedMetadata("dx.rootsignatures");
+  if (RootSignaturesNode) {
+    // Only insert any extra root signature lowering info on insert
+    MDNode *InfoMD = RootSignaturesNode->getOperand(0);
+    [[maybe_unused]] bool HasStripMD =
+        mdconst::hasa<ConstantInt>(InfoMD->getOperand(0));
+    assert(HasStripMD && "Failed to parse Strip Root Signature component");
+    auto *StripRootSignature =
+        mdconst::dyn_extract<ConstantInt>(InfoMD->getOperand(0));
+    if (StripRootSignature)
+      MMDAI.StripRootSignature = StripRootSignature->getZExtValue();
+  }
   return MMDAI;
 }
 
@@ -84,6 +96,7 @@ void ModuleMetadataInfo::print(raw_ostream &OS) const {
     OS << "  NumThreads: " << EP.NumThreadsX << "," << EP.NumThreadsY << ","
        << EP.NumThreadsZ << "\n";
   }
+  OS << "Strip Root Signature: " << StripRootSignature << "\n";
 }
 
 
//===----------------------------------------------------------------------===//
diff --git a/llvm/lib/Target/DirectX/DXContainerGlobals.cpp 
b/llvm/lib/Target/DirectX/DXContainerGlobals.cpp
index b6e8ce7d78b23..8889d281cee45 100644
--- a/llvm/lib/Target/DirectX/DXContainerGlobals.cpp
+++ b/llvm/lib/Target/DirectX/DXContainerGlobals.cpp
@@ -154,6 +154,10 @@ void DXContainerGlobals::addRootSignature(Module &M,
   dxil::ModuleMetadataInfo &MMI =
       getAnalysis<DXILMetadataAnalysisWrapperPass>().getModuleMetadata();
 
+  // Compiler flag denotes to not output the root signature part (RTS0)
+  if (MMI.StripRootSignature)
+    return;
+
   // Root Signature in Library don't compile to DXContainer.
   if (MMI.ShaderProfile == llvm::Triple::Library)
     return;
diff --git a/llvm/lib/Target/DirectX/DXILRootSignature.cpp 
b/llvm/lib/Target/DirectX/DXILRootSignature.cpp
index dfc81626da01f..60beb4d0c5d5b 100644
--- a/llvm/lib/Target/DirectX/DXILRootSignature.cpp
+++ b/llvm/lib/Target/DirectX/DXILRootSignature.cpp
@@ -527,8 +527,17 @@ analyzeModule(Module &M) {
   NamedMDNode *RootSignatureNode = M.getNamedMetadata("dx.rootsignatures");
   if (RootSignatureNode == nullptr)
     return RSDMap;
+  if (RootSignatureNode->getNumOperands() == 0) {
+    reportError(Ctx, "Invalid Root Signature metadata - expected lowering "
+                     "info and then Root Signature operands.");
+    return RSDMap;
+  }
+
+  // Ignore the lowering info metadata
+  auto Begin = std::next(RootSignatureNode->op_begin());
+  auto RSNodes = iterator_range(Begin, RootSignatureNode->op_end());
 
-  for (const auto &RSDefNode : RootSignatureNode->operands()) {
+  for (const auto &RSDefNode : RSNodes) {
     if (RSDefNode->getNumOperands() != 3) {
       reportError(Ctx, "Invalid Root Signature metadata - expected function, "
                        "signature, and version.");
diff --git a/llvm/test/Analysis/DXILMetadataAnalysis/keep-rootsignature.ll 
b/llvm/test/Analysis/DXILMetadataAnalysis/keep-rootsignature.ll
new file mode 100644
index 0000000000000..6a58b5eac80dd
--- /dev/null
+++ b/llvm/test/Analysis/DXILMetadataAnalysis/keep-rootsignature.ll
@@ -0,0 +1,24 @@
+; RUN: opt -S -passes="print<dxil-metadata>" -disable-output %s 2>&1 | 
FileCheck %s
+target triple = "dxil-pc-shadermodel6.0-compute"
+
+; CHECK: Shader Model Version : 6.0
+; CHECK-NEXT: DXIL Version : 1.0
+; CHECK-NEXT: Shader Stage : compute
+; CHECK-NEXT: Validator Version : 0
+; CHECK-NEXT: entry
+; CHECK-NEXT:   Function Shader Stage : compute
+; CHECK-NEXT:   NumThreads: 1,1,1
+; CHECK-NEXT: Strip Root Signature: 0
+; CHECK-EMPTY:
+
+define void @entry() #0 {
+entry:
+  ret void
+}
+
+attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
+
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 false} ; don't strip root signature
+!2 = !{ ptr @entry, !3, i32 2 } ; function, root signature, version
+!3 = !{} ; empty root signature
diff --git a/llvm/test/Analysis/DXILMetadataAnalysis/strip-rootsignature.ll 
b/llvm/test/Analysis/DXILMetadataAnalysis/strip-rootsignature.ll
new file mode 100644
index 0000000000000..2a2315d03a81c
--- /dev/null
+++ b/llvm/test/Analysis/DXILMetadataAnalysis/strip-rootsignature.ll
@@ -0,0 +1,25 @@
+
+; RUN: opt -S -passes="print<dxil-metadata>" -disable-output %s 2>&1 | 
FileCheck %s
+target triple = "dxil-pc-shadermodel6.0-compute"
+
+; CHECK: Shader Model Version : 6.0
+; CHECK-NEXT: DXIL Version : 1.0
+; CHECK-NEXT: Shader Stage : compute
+; CHECK-NEXT: Validator Version : 0
+; CHECK-NEXT: entry
+; CHECK-NEXT:   Function Shader Stage : compute
+; CHECK-NEXT:   NumThreads: 1,1,1
+; CHECK-NEXT: Strip Root Signature: 1
+; CHECK-EMPTY:
+
+define void @entry() #0 {
+entry:
+  ret void
+}
+
+attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
+
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 true} ; don't strip root signature
+!2 = !{ ptr @entry, !3, i32 2 } ; function, root signature, version
+!3 = !{} ; empty root signature
diff --git a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Stripped.ll 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Stripped.ll
new file mode 100644
index 0000000000000..f00b589bd76b3
--- /dev/null
+++ b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Stripped.ll
@@ -0,0 +1,31 @@
+; RUN: opt %s -dxil-embed -dxil-globals -S -o - | FileCheck %s
+; RUN: llc %s --filetype=obj -o - | obj2yaml | FileCheck %s --check-prefix=DXC
+
+target triple = "dxil-unknown-shadermodel6.0-compute"
+
+define void @main() #0 {
+entry:
+  ret void
+}
+attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
+
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 true} ; strip root signature
+!2 = !{ ptr @main, !3, i32 2 } ; function, root signature
+!3 = !{ !5 } ; list of root signature elements
+!5 = !{ !"DescriptorTable", i32 0, !6, !7 }
+!6 = !{ !"SRV", i32 1, i32 1, i32 0, i32 -1, i32 4 }
+!7 = !{ !"UAV", i32 5, i32 1, i32 10, i32 5, i32 2 }
+
+; Check "required" parts are present
+; DXC: - Name:             DXIL
+; DXC: - Name:             HASH
+; DXC: - Name:             PSV0
+
+; CHECK:     @dx.dxil = private constant
+; CHECK:     @dx.hash = private constant
+; CHECK:     @dx.psv0 = private constant
+
+; But no RTS0 (root signature) part
+; DXC-NOT: - Name:            RTS0
+; CHECK-NOT: @dx.rts0 = private constant

>From 9c3c6775d14f6d70fe30267a8353c28aef499636 Mon Sep 17 00:00:00 2001
From: Finn Plummer <canadienf...@gmail.com>
Date: Tue, 5 Aug 2025 17:56:55 +0000
Subject: [PATCH 3/5] [NFC] update `dx.rootsignature` in testcases

---
 clang/test/CodeGenHLSL/RootSignature.hlsl                | 4 +++-
 ...Signature-DescriptorTable-AllValidFlagCombinations.ll | 3 ++-
 ...gnature-DescriptorTable-AllValidFlagCombinationsV1.ll | 3 ++-
 .../RootSignature-DescriptorTable-Invalid-Flag.ll        | 3 ++-
 ...otSignature-DescriptorTable-Invalid-NumDescriptors.ll | 3 ++-
 .../RootSignature-DescriptorTable-Invalid-RangeType.ll   | 3 ++-
 ...ootSignature-DescriptorTable-Invalid-RegisterSpace.ll | 3 ++-
 .../ContainerData/RootSignature-DescriptorTable.ll       | 3 ++-
 .../ContainerData/RootSignature-Error-is-not-function.ll | 3 ++-
 .../ContainerData/RootSignature-Error-is-not-value.ll    | 3 ++-
 .../RootSignature-Error-no-root-element-list.ll          | 3 ++-
 .../RootSignature-Error-root-element-not-mdnode.ll       | 3 ++-
 .../CodeGen/DirectX/ContainerData/RootSignature-Error.ll | 3 ++-
 .../DirectX/ContainerData/RootSignature-Flags-Error.ll   | 3 ++-
 .../CodeGen/DirectX/ContainerData/RootSignature-Flags.ll | 3 ++-
 .../RootSignature-MultipleEntryFunctions.ll              | 3 ++-
 .../ContainerData/RootSignature-NullFunction-Error.ll    | 3 ++-
 ...tSignature-Parameters-Invalid-ParameterIsNotString.ll | 9 +++++----
 .../RootSignature-Parameters-Validation-Error.ll         | 3 ++-
 .../DirectX/ContainerData/RootSignature-Parameters.ll    | 3 ++-
 ...RootSignature-RootConstants-Invalid-Num32BitValues.ll | 3 ++-
 .../RootSignature-RootConstants-Invalid-RegisterSpace.ll | 3 ++-
 ...RootSignature-RootConstants-Invalid-ShaderRegister.ll | 3 ++-
 .../DirectX/ContainerData/RootSignature-RootConstants.ll | 3 ++-
 .../RootSignature-RootDescriptor-Invalid-Flags.ll        | 3 ++-
 ...ootSignature-RootDescriptor-Invalid-Multiple-Flags.ll | 3 ++-
 .../RootSignature-RootDescriptor-Invalid-RegisterKind.ll | 3 ++-
 ...RootSignature-RootDescriptor-Invalid-RegisterSpace.ll | 3 ++-
 ...RootSignature-RootDescriptor-Invalid-RegisterValue.ll | 3 ++-
 .../ContainerData/RootSignature-RootDescriptor.ll        | 3 ++-
 .../ContainerData/RootSignature-RootDescriptor_V1.ll     | 3 ++-
 .../ContainerData/RootSignature-RootElement-Error.ll     | 3 ++-
 .../RootSignature-RootFlags-VisibilityValidationError.ll | 3 ++-
 .../RootSignature-StaticSamplers-Invalid-AddressU.ll     | 3 ++-
 .../RootSignature-StaticSamplers-Invalid-AddressV.ll     | 3 ++-
 .../RootSignature-StaticSamplers-Invalid-AddressW.ll     | 3 ++-
 .../RootSignature-StaticSamplers-Invalid-BorderColor.ll  | 3 ++-
 ...ootSignature-StaticSamplers-Invalid-ComparisonFunc.ll | 3 ++-
 .../RootSignature-StaticSamplers-Invalid-Filter.ll       | 3 ++-
 ...RootSignature-StaticSamplers-Invalid-MaxAnisotropy.ll | 3 ++-
 .../RootSignature-StaticSamplers-Invalid-MaxLod.ll       | 3 ++-
 .../RootSignature-StaticSamplers-Invalid-MinLod.ll       | 3 ++-
 .../RootSignature-StaticSamplers-Invalid-MinLopBias.ll   | 3 ++-
 ...RootSignature-StaticSamplers-Invalid-RegisterSpace.ll | 3 ++-
 ...ootSignature-StaticSamplers-Invalid-ShaderRegister.ll | 3 ++-
 ...tSignature-StaticSamplers-Invalid-ShaderVisibility.ll | 3 ++-
 .../ContainerData/RootSignature-StaticSamplers.ll        | 3 ++-
 llvm/test/CodeGen/DirectX/strip-rootsignatures.ll        | 3 ++-
 48 files changed, 100 insertions(+), 51 deletions(-)

diff --git a/clang/test/CodeGenHLSL/RootSignature.hlsl 
b/clang/test/CodeGenHLSL/RootSignature.hlsl
index bc40bdd79ce59..9aa786310198d 100644
--- a/clang/test/CodeGenHLSL/RootSignature.hlsl
+++ b/clang/test/CodeGenHLSL/RootSignature.hlsl
@@ -1,8 +1,10 @@
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -emit-llvm -o - %s | 
FileCheck %s
 
-// CHECK: !dx.rootsignatures = !{![[#EMPTY_ENTRY:]], ![[#DT_ENTRY:]],
+// CHECK: !dx.rootsignatures = !{![[#LOWER_INFO:]], ![[#EMPTY_ENTRY:]], 
![[#DT_ENTRY:]],
 // CHECK-SAME: ![[#RF_ENTRY:]], ![[#RC_ENTRY:]], ![[#RD_ENTRY:]], 
![[#SS_ENTRY:]]}
 
+// CHECK: ![[#LOWER_INFO]] = !{i1 false}
+
 // CHECK: ![[#EMPTY_ENTRY]] = !{ptr @EmptyEntry, ![[#EMPTY:]], i32 2}
 // CHECK: ![[#EMPTY]] = !{}
 
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-AllValidFlagCombinations.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-AllValidFlagCombinations.ll
index 8eb7f90c6b757..9663194e219bb 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-AllValidFlagCombinations.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-AllValidFlagCombinations.ll
@@ -9,7 +9,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"DescriptorTable", i32 0, !6, !8, !9, !10, !11, !12, !13, !14, !15, 
!16, !17, !18, !19, !20 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-AllValidFlagCombinationsV1.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-AllValidFlagCombinationsV1.ll
index 053721de1eb1f..465bf1887bd76 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-AllValidFlagCombinationsV1.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-AllValidFlagCombinationsV1.ll
@@ -9,7 +9,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 1 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"DescriptorTable", i32 0, !6, !7 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-Invalid-Flag.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-Invalid-Flag.ll
index 58056c5d4ba94..4664dbb8e6d94 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-Invalid-Flag.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-Invalid-Flag.ll
@@ -12,7 +12,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"DescriptorTable", i32 0, !6, !7 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-Invalid-NumDescriptors.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-Invalid-NumDescriptors.ll
index 99d126ee95443..0077a19510859 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-Invalid-NumDescriptors.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-Invalid-NumDescriptors.ll
@@ -12,7 +12,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"DescriptorTable", i32 0, !6}
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-Invalid-RangeType.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-Invalid-RangeType.ll
index 0f7116307c315..322f9f053f0f6 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-Invalid-RangeType.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-Invalid-RangeType.ll
@@ -12,7 +12,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"DescriptorTable", i32 0, !6, !7 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-Invalid-RegisterSpace.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-Invalid-RegisterSpace.ll
index 94cd25b06a127..3d305fdfd279e 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-Invalid-RegisterSpace.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable-Invalid-RegisterSpace.ll
@@ -12,7 +12,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"DescriptorTable", i32 0, !6, !7 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable.ll 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable.ll
index 8e9b4b43b11a6..4a133fa2e94c8 100644
--- a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable.ll
+++ b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-DescriptorTable.ll
@@ -12,7 +12,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"DescriptorTable", i32 0, !6, !7 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error-is-not-function.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error-is-not-function.ll
index fbda7561cecad..cc6d02bc4e88a 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error-is-not-function.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error-is-not-function.ll
@@ -17,7 +17,8 @@ entry:
 
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
-!dx.rootsignatures = !{!2, !5} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2, !5} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !4 } ; list of root signature elements
 !4 = !{ !"RootFlags", i32 1 } ; 1 = allow_input_assembler_input_layout
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error-is-not-value.ll 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error-is-not-value.ll
index 94ab52e1f29c0..d6c5c65459d79 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error-is-not-value.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error-is-not-value.ll
@@ -17,7 +17,8 @@ entry:
 
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
-!dx.rootsignatures = !{!2, !5} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2, !5} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !4 } ; list of root signature elements
 !4 = !{ !"RootFlags", i32 1 } ; 1 = allow_input_assembler_input_layout
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error-no-root-element-list.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error-no-root-element-list.ll
index dc7a3fd103207..c749ea720f4cf 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error-no-root-element-list.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error-no-root-element-list.ll
@@ -17,7 +17,8 @@ entry:
 
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
-!dx.rootsignatures = !{!2, !5} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2, !5} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, null, i32 2 } ; function, root signature
 !3 = !{ !4 } ; list of root signature elements
 !4 = !{ !"RootFlags", i32 1 } ; 1 = allow_input_assembler_input_layout
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error-root-element-not-mdnode.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error-root-element-not-mdnode.ll
index 3028ca99e4ef6..a0582d7eca5d0 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error-root-element-not-mdnode.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error-root-element-not-mdnode.ll
@@ -17,7 +17,8 @@ entry:
 
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
-!dx.rootsignatures = !{!2, !5} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2, !5} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, i32 -1, i32 2 } ; function, root signature
 !3 = !{ !4 } ; list of root signature elements
 !4 = !{ !"RootFlags", i32 1 } ; 1 = allow_input_assembler_input_layout
diff --git a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error.ll 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error.ll
index 0392065842116..88c206e3bfb74 100644
--- a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error.ll
+++ b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Error.ll
@@ -14,5 +14,6 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!1} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !1} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !1= !{ !"RootFlags" } ; function, root signature
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Flags-Error.ll 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Flags-Error.ll
index 65511160f230d..3a030a3a2bf08 100644
--- a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Flags-Error.ll
+++ b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Flags-Error.ll
@@ -14,7 +14,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !4 } ; list of root signature elements
 !4 = !{ !"NOTRootFlags", i32 1 } ; 1 = allow_input_assembler_input_layout
diff --git a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Flags.ll 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Flags.ll
index 10235b7d17960..7c25ed4415880 100644
--- a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Flags.ll
+++ b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Flags.ll
@@ -12,7 +12,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !4 } ; list of root signature elements
 !4 = !{ !"RootFlags", i32 1 } ; 1 = allow_input_assembler_input_layout
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-MultipleEntryFunctions.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-MultipleEntryFunctions.ll
index fec9c226d8bc5..317ff88e57ea2 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-MultipleEntryFunctions.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-MultipleEntryFunctions.ll
@@ -15,7 +15,8 @@ entry:
 
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
-!dx.rootsignatures = !{!2, !5} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2, !5} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !4 } ; list of root signature elements
 !4 = !{ !"RootFlags", i32 1 } ; 1 = allow_input_assembler_input_layout
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-NullFunction-Error.ll 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-NullFunction-Error.ll
index c6b57ee31c87a..61a21f5de6645 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-NullFunction-Error.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-NullFunction-Error.ll
@@ -12,7 +12,8 @@ entry:
 
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
-!dx.rootsignatures = !{!2, !5} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2, !5} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !4 } ; list of root signature elements
 !4 = !{ !"RootFlags", i32 1 } ; 1 = allow_input_assembler_input_layout
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Parameters-Invalid-ParameterIsNotString.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Parameters-Invalid-ParameterIsNotString.ll
index b4b616f8fd6ee..3f60bce1ce34a 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Parameters-Invalid-ParameterIsNotString.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Parameters-Invalid-ParameterIsNotString.ll
@@ -13,7 +13,8 @@ entry:
 
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
-!dx.rootsignatures = !{!0}
-!0 = !{ ptr @main, !1, i32 2 }
-!1 = !{ !2 }
-!2 = !{ i32 0 }
+!dx.rootsignatures = !{!0, !1}
+!0 = !{i1 0} ; strip root signature
+!1 = !{ ptr @main, !2, i32 2 }
+!2 = !{ !3 }
+!3 = !{ i32 0 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Parameters-Validation-Error.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Parameters-Validation-Error.ll
index a61928d0a7fd3..6121435d3613a 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Parameters-Validation-Error.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Parameters-Validation-Error.ll
@@ -14,7 +14,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"RootConstants", i32 255, i32 1, i32 2, i32 3 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Parameters.ll 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Parameters.ll
index 6477ad397c32d..8dc8a537600f5 100644
--- a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Parameters.ll
+++ b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-Parameters.ll
@@ -10,7 +10,8 @@ entry:
 
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !4, !5, !6, !7 } ; list of root signature elements
 !4 = !{ !"RootFlags", i32 1 } ; 1 = allow_input_assembler_input_layout
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootConstants-Invalid-Num32BitValues.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootConstants-Invalid-Num32BitValues.ll
index 121bc6e932a48..df6fa4e5b7d5a 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootConstants-Invalid-Num32BitValues.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootConstants-Invalid-Num32BitValues.ll
@@ -10,7 +10,8 @@ entry:
   ret void
 }
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"RootConstants", i32 0, i32 1, i32 2, !"Invalid" }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootConstants-Invalid-RegisterSpace.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootConstants-Invalid-RegisterSpace.ll
index 3534e5d1c5a26..464458ad44521 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootConstants-Invalid-RegisterSpace.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootConstants-Invalid-RegisterSpace.ll
@@ -12,7 +12,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"RootConstants", i32 0, i32 1, !"Invalid", i32 3 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootConstants-Invalid-ShaderRegister.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootConstants-Invalid-ShaderRegister.ll
index 5c3dce2f419ee..f524d59b58cfe 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootConstants-Invalid-ShaderRegister.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootConstants-Invalid-ShaderRegister.ll
@@ -12,7 +12,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"RootConstants", i32 0, !"Invalid", i32 2, i32 3 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootConstants.ll 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootConstants.ll
index 964554fe143ef..27cea999874d7 100644
--- a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootConstants.ll
+++ b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootConstants.ll
@@ -12,7 +12,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"RootConstants", i32 0, i32 1, i32 2, i32 3 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-Flags.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-Flags.ll
index 96f96011a7d16..706bee43f9407 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-Flags.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-Flags.ll
@@ -12,7 +12,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"RootCBV", i32 0, i32 1, i32 2, i32 3  }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-Multiple-Flags.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-Multiple-Flags.ll
index dd06a2783bd10..35ba100c40b71 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-Multiple-Flags.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-Multiple-Flags.ll
@@ -13,7 +13,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"RootCBV", i32 0, i32 1, i32 2, i32 10 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-RegisterKind.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-RegisterKind.ll
index 579528d8b5e13..8a57681d52437 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-RegisterKind.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-RegisterKind.ll
@@ -12,7 +12,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"Invalid", i32 0, i32 1, i32 2, i32 3  }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-RegisterSpace.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-RegisterSpace.ll
index 18582090e761d..65b154cf9fc57 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-RegisterSpace.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-RegisterSpace.ll
@@ -12,7 +12,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"RootCBV", i32 0, i32 1, i32 4294967280, i32 0  }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-RegisterValue.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-RegisterValue.ll
index 8bbfdf00bea29..13b134a91f704 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-RegisterValue.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor-Invalid-RegisterValue.ll
@@ -12,7 +12,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"RootCBV", i32 0, i32 4294967295, i32 2, i32 3  }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor.ll 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor.ll
index f77bb96840bea..5af06a57b8115 100644
--- a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor.ll
+++ b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor.ll
@@ -12,7 +12,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"RootCBV", i32 0, i32 1, i32 2, i32 8  }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor_V1.ll 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor_V1.ll
index ddf556e7fe20a..a399149d90c8a 100644
--- a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor_V1.ll
+++ b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootDescriptor_V1.ll
@@ -12,7 +12,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 1 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"RootCBV", i32 0, i32 1, i32 2, i32 2  }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootElement-Error.ll 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootElement-Error.ll
index aa8d46dccbac4..67e3e1c6a8d19 100644
--- a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootElement-Error.ll
+++ b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootElement-Error.ll
@@ -14,6 +14,7 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !"NOTRootElements" } ; list of root signature elements
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootFlags-VisibilityValidationError.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootFlags-VisibilityValidationError.ll
index baeb74c2c3ce7..b48d5702e415e 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootFlags-VisibilityValidationError.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-RootFlags-VisibilityValidationError.ll
@@ -14,7 +14,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !4 } ; list of root signature elements
 !4 = !{ !"RootFlags", i32 2147487744 } ; 1 = allow_input_assembler_input_layout
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-AddressU.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-AddressU.ll
index 288dea00b6e55..d702f954305d2 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-AddressU.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-AddressU.ll
@@ -13,7 +13,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"StaticSampler", i32 4, i32 666, i32 3, i32 5, float 
0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 
1.280000e+02, i32 42, i32 0, i32 0 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-AddressV.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-AddressV.ll
index e9abcf9669999..c7598c48c34c0 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-AddressV.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-AddressV.ll
@@ -13,7 +13,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"StaticSampler", i32 4, i32 2, i32 666, i32 5, float 
0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 
1.280000e+02, i32 42, i32 0, i32 0 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-AddressW.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-AddressW.ll
index 238f488ee78d6..da03a4be35af8 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-AddressW.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-AddressW.ll
@@ -13,7 +13,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 666, float 
0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 
1.280000e+02, i32 42, i32 0, i32 0 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-BorderColor.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-BorderColor.ll
index 8dc69eb1f9d7c..7617f44cf56f8 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-BorderColor.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-BorderColor.ll
@@ -13,7 +13,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 
0x3FF6CCCCC0000000, i32 9, i32 3, i32 666, float -1.280000e+02, float 
1.280000e+02, i32 42, i32 0, i32 0 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-ComparisonFunc.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-ComparisonFunc.ll
index b2c8faf8d4a0a..081a00c460945 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-ComparisonFunc.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-ComparisonFunc.ll
@@ -13,7 +13,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 
0x3FF6CCCCC0000000, i32 9, i32 666, i32 2, float -1.280000e+02, float 
1.280000e+02, i32 42, i32 0, i32 0 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-Filter.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-Filter.ll
index 758d2629ed78e..4460287006907 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-Filter.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-Filter.ll
@@ -13,7 +13,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"StaticSampler", i32 45, i32 2, i32 3, i32 5, float 
0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 
1.280000e+02, i32 42, i32 0, i32 0 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MaxAnisotropy.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MaxAnisotropy.ll
index 47d4b52d72e8e..b762cacb42e35 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MaxAnisotropy.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MaxAnisotropy.ll
@@ -13,7 +13,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 
0x3FF6CCCCC0000000, i32 666, i32 3, i32 2, float -1.280000e+02, float 
1.280000e+02, i32 42, i32 0, i32 0 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MaxLod.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MaxLod.ll
index 7e7d56eff309c..8a0272cef7555 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MaxLod.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MaxLod.ll
@@ -13,7 +13,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 
0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 
0x7FF8000000000000, i32 42, i32 0, i32 0 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MinLod.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MinLod.ll
index d958f10d3c1af..4f110ffac6522 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MinLod.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MinLod.ll
@@ -13,7 +13,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 
0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float 0x7FF8000000000000, float 
1.280000e+02, i32 42, i32 0, i32 0 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MinLopBias.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MinLopBias.ll
index 34b27eb40f5fb..e25d84347709d 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MinLopBias.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MinLopBias.ll
@@ -13,7 +13,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 6.660000e+02, i32 
9, i32 3, i32 2, float -1.280000e+02, float 1.280000e+02, i32 42, i32 0, i32 0 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-RegisterSpace.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-RegisterSpace.ll
index dc6ee4290b532..ec77e23b7e73d 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-RegisterSpace.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-RegisterSpace.ll
@@ -13,7 +13,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 
0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 
1.280000e+02, i32 42, i32 4294967280, i32 0 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-ShaderRegister.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-ShaderRegister.ll
index 6cee1dd95fd81..2ee2b486fc856 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-ShaderRegister.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-ShaderRegister.ll
@@ -13,7 +13,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 
0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 
1.280000e+02, i32 4294967295, i32 0, i32 0 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-ShaderVisibility.ll
 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-ShaderVisibility.ll
index fa5bf12e2b8cd..311b6030748c1 100644
--- 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-ShaderVisibility.ll
+++ 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-ShaderVisibility.ll
@@ -13,7 +13,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 
0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 
1.280000e+02, i32 42, i32 0, i32 666 }
diff --git 
a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers.ll 
b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers.ll
index d9ee39dbb7287..9e21ada1b9909 100644
--- a/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers.ll
+++ b/llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers.ll
@@ -12,7 +12,8 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0} ; strip root signature
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !5 } ; list of root signature elements
 !5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 
0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 
1.280000e+02, i32 42, i32 0, i32 0 }
diff --git a/llvm/test/CodeGen/DirectX/strip-rootsignatures.ll 
b/llvm/test/CodeGen/DirectX/strip-rootsignatures.ll
index 3ac617ae871fc..3f806d052a6db 100644
--- a/llvm/test/CodeGen/DirectX/strip-rootsignatures.ll
+++ b/llvm/test/CodeGen/DirectX/strip-rootsignatures.ll
@@ -12,7 +12,8 @@ entry:
 ; CHECK-NOT: !dx.rootsignatures
 ; CHECK-NOT: {{^!}}
 
-!dx.rootsignatures = !{!2} ; list of function/root signature pairs
+!dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
+!0 = !{i1 0}
 !2 = !{ ptr @main, !3, i32 2 } ; function, root signature
 !3 = !{ !4 } ; list of root signature elements
 !4 = !{ !"RootFlags", i32 1 } ; 1 = allow_input_assembler_input_layout

>From 92dc6b0e6d4a33837ae1f3d789d389a2cf6b640b Mon Sep 17 00:00:00 2001
From: Finn Plummer <canadienf...@gmail.com>
Date: Tue, 5 Aug 2025 17:57:35 +0000
Subject: [PATCH 4/5] [NFC] update metadata analysis testcases

---
 llvm/test/Analysis/DXILMetadataAnalysis/dxilVer-1.0.ll           | 1 +
 llvm/test/Analysis/DXILMetadataAnalysis/dxilVer-1.8.ll           | 1 +
 llvm/test/Analysis/DXILMetadataAnalysis/entry-properties.ll      | 1 +
 llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-as.ll        | 1 +
 .../Analysis/DXILMetadataAnalysis/shaderModel-cs-val-ver-0.0.ll  | 1 +
 llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-cs.ll        | 1 +
 llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-gs.ll        | 1 +
 llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-hs.ll        | 1 +
 llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-ms.ll        | 1 +
 llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-ps.ll        | 1 +
 llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-vs.ll        | 1 +
 11 files changed, 11 insertions(+)

diff --git a/llvm/test/Analysis/DXILMetadataAnalysis/dxilVer-1.0.ll 
b/llvm/test/Analysis/DXILMetadataAnalysis/dxilVer-1.0.ll
index 75c05d86dc781..116554bda4cae 100644
--- a/llvm/test/Analysis/DXILMetadataAnalysis/dxilVer-1.0.ll
+++ b/llvm/test/Analysis/DXILMetadataAnalysis/dxilVer-1.0.ll
@@ -8,6 +8,7 @@ target triple = "dxil-pc-shadermodel6.0-vertex"
 ; CHECK-NEXT: entry
 ; CHECK-NEXT:   Function Shader Stage : vertex
 ; CHECK-NEXT:   NumThreads: 0,0,0
+; CHECK-NEXT: Strip Root Signature: 1
 ; CHECK-EMPTY:
 
 define void @entry() #0 {
diff --git a/llvm/test/Analysis/DXILMetadataAnalysis/dxilVer-1.8.ll 
b/llvm/test/Analysis/DXILMetadataAnalysis/dxilVer-1.8.ll
index 7a2cb51f9c819..0540621e455ae 100644
--- a/llvm/test/Analysis/DXILMetadataAnalysis/dxilVer-1.8.ll
+++ b/llvm/test/Analysis/DXILMetadataAnalysis/dxilVer-1.8.ll
@@ -8,6 +8,7 @@ target triple = "dxil-pc-shadermodel6.8-compute"
 ; CHECK-NEXT: entry
 ; CHECK-NEXT:   Function Shader Stage : compute
 ; CHECK-NEXT: NumThreads: 1,2,1
+; CHECK-NEXT: Strip Root Signature: 1
 ; CHECK-EMPTY:
 
 define void @entry() #0 {
diff --git a/llvm/test/Analysis/DXILMetadataAnalysis/entry-properties.ll 
b/llvm/test/Analysis/DXILMetadataAnalysis/entry-properties.ll
index a2c6c3a7952d4..c6f78fb32a185 100644
--- a/llvm/test/Analysis/DXILMetadataAnalysis/entry-properties.ll
+++ b/llvm/test/Analysis/DXILMetadataAnalysis/entry-properties.ll
@@ -14,6 +14,7 @@ target triple = "dxil-pc-shadermodel6.8-library"
 ; CHECK-NEXT: entry_cs
 ; CHECK-NEXT:   Function Shader Stage : compute
 ; CHECK-NEXT:   NumThreads: 1,2,1
+; CHECK-NEXT: Strip Root Signature: 1
 ; CHECK-EMPTY:
 
 define void @entry_as() #0 {
diff --git a/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-as.ll 
b/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-as.ll
index 6a8496bf731a3..36ed69e6c1fbb 100644
--- a/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-as.ll
+++ b/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-as.ll
@@ -8,6 +8,7 @@ target triple = "dxil-pc-shadermodel6-amplification"
 ; CHECK-NEXT: entry
 ; CHECK-NEXT:  Function Shader Stage : amplification
 ; CHECK-NEXT:   NumThreads: 0,0,0
+; CHECK-NEXT: Strip Root Signature: 1
 ; CHECK-EMPTY:
 
 define void @entry() #0 {
diff --git 
a/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-cs-val-ver-0.0.ll 
b/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-cs-val-ver-0.0.ll
index e09f4fc411433..8370a4231834a 100644
--- a/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-cs-val-ver-0.0.ll
+++ b/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-cs-val-ver-0.0.ll
@@ -20,4 +20,5 @@ attributes #0 = { noinline nounwind "exp-shader"="cs" 
"hlsl.numthreads"="1,2,1"
 ; CHECK-NEXT: entry
 ; CHECK-NEXT:  Function Shader Stage : compute
 ; CHECK-NEXT:   NumThreads: 1,2,1
+; CHECK-NEXT: Strip Root Signature: 1
 ; CHECK-EMPTY:
diff --git a/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-cs.ll 
b/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-cs.ll
index 4d6d696e6b29e..0f0a0a0f2b77a 100644
--- a/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-cs.ll
+++ b/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-cs.ll
@@ -9,6 +9,7 @@ target triple = "dxil-pc-shadermodel6.6-compute"
 ; CHECK-NEXT: entry
 ; CHECK-NEXT:  Function Shader Stage : compute
 ; CHECK-NEXT:   NumThreads: 1,2,1
+; CHECK-NEXT: Strip Root Signature: 1
 ; CHECK-EMPTY:
 
 define void @entry() #0 {
diff --git a/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-gs.ll 
b/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-gs.ll
index e28438901bdfe..2bb555e0be868 100644
--- a/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-gs.ll
+++ b/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-gs.ll
@@ -8,6 +8,7 @@ target triple = "dxil-pc-shadermodel6.6-geometry"
 ; CHECK-NEXT: entry
 ; CHECK-NEXT:  Function Shader Stage : geometry
 ; CHECK-NEXT:   NumThreads: 0,0,0
+; CHECK-NEXT: Strip Root Signature: 1
 ; CHECK-EMPTY:
 
 define void @entry() #0 {
diff --git a/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-hs.ll 
b/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-hs.ll
index fdec1d857118b..f70833a5e8615 100644
--- a/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-hs.ll
+++ b/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-hs.ll
@@ -8,6 +8,7 @@ target triple = "dxil-pc-shadermodel6.6-hull"
 ; CHECK-NEXT: entry
 ; CHECK-NEXT:  Function Shader Stage : hull
 ; CHECK-NEXT:  NumThreads: 0,0,0
+; CHECK-NEXT: Strip Root Signature: 1
 ; CHECK-EMPTY:
 
 define void @entry() #0 {
diff --git a/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-ms.ll 
b/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-ms.ll
index 77bc3bbd85f9f..234c9cc6235f3 100644
--- a/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-ms.ll
+++ b/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-ms.ll
@@ -8,6 +8,7 @@ target triple = "dxil-pc-shadermodel6.6-mesh"
 ; CHECK-NEXT: entry
 ; CHECK-NEXT:  Function Shader Stage : mesh
 ; CHECK-NEXT:   NumThreads: 0,0,0
+; CHECK-NEXT: Strip Root Signature: 1
 ; CHECK-EMPTY:
 
 define void @entry() #0 {
diff --git a/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-ps.ll 
b/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-ps.ll
index a02c56dbe17a2..914c47e45184b 100644
--- a/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-ps.ll
+++ b/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-ps.ll
@@ -8,6 +8,7 @@ target triple = "dxil-pc-shadermodel5.0-pixel"
 ; CHECK-NEXT: entry
 ; CHECK-NEXT:  Function Shader Stage : pixel
 ; CHECK-NEXT:   NumThreads: 0,0,0
+; CHECK-NEXT: Strip Root Signature: 1
 ; CHECK-EMPTY:
 
 define void @entry() #0 {
diff --git a/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-vs.ll 
b/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-vs.ll
index 107f9fc1f0a24..d7b499aee2636 100644
--- a/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-vs.ll
+++ b/llvm/test/Analysis/DXILMetadataAnalysis/shaderModel-vs.ll
@@ -8,6 +8,7 @@ target triple = "dxil-pc-shadermodel-vertex"
 ; CHECK-NEXT: entry
 ; CHECK-NEXT:  Function Shader Stage : vertex
 ; CHECK-NEXT:   NumThreads: 0,0,0
+; CHECK-NEXT: Strip Root Signature: 1
 ; CHECK-EMPTY:
 
 define void @entry() #0 {

>From f47eab5715e9ad40d1a7e1c31b504c5a3da50f3f Mon Sep 17 00:00:00 2001
From: Finn Plummer <canadienf...@gmail.com>
Date: Tue, 5 Aug 2025 18:08:08 +0000
Subject: [PATCH 5/5] fix-up testcase

---
 llvm/test/Analysis/DXILMetadataAnalysis/strip-rootsignature.ll | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/llvm/test/Analysis/DXILMetadataAnalysis/strip-rootsignature.ll 
b/llvm/test/Analysis/DXILMetadataAnalysis/strip-rootsignature.ll
index 2a2315d03a81c..9a2c87f8e5db4 100644
--- a/llvm/test/Analysis/DXILMetadataAnalysis/strip-rootsignature.ll
+++ b/llvm/test/Analysis/DXILMetadataAnalysis/strip-rootsignature.ll
@@ -1,4 +1,3 @@
-
 ; RUN: opt -S -passes="print<dxil-metadata>" -disable-output %s 2>&1 | 
FileCheck %s
 target triple = "dxil-pc-shadermodel6.0-compute"
 
@@ -20,6 +19,6 @@ entry:
 attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
 
 !dx.rootsignatures = !{!0, !2} ; list of function/root signature pairs
-!0 = !{i1 true} ; don't strip root signature
+!0 = !{i1 true} ; strip root signature
 !2 = !{ ptr @entry, !3, i32 2 } ; function, root signature, version
 !3 = !{} ; empty root signature

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

Reply via email to