python3kgae updated this revision to Diff 455817.
python3kgae marked 3 inline comments as done.
python3kgae added a comment.

Remove empty function and replace auto with correct type.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D130207/new/

https://reviews.llvm.org/D130207

Files:
  clang/lib/CodeGen/CGHLSLRuntime.cpp
  clang/test/CodeGenHLSL/validator_version.hlsl
  llvm/lib/Target/DirectX/DXILTranslateMetadata.cpp
  llvm/test/CodeGen/DirectX/dxil_ver.ll

Index: llvm/test/CodeGen/DirectX/dxil_ver.ll
===================================================================
--- llvm/test/CodeGen/DirectX/dxil_ver.ll
+++ llvm/test/CodeGen/DirectX/dxil_ver.ll
@@ -3,18 +3,18 @@
 target triple = "dxil-pc-shadermodel6.3-library"
 
 ; Make sure dx.valver metadata is generated.
-; CHECK:!dx.valver = !{![[valver:[0-9]+]]}
+; CHECK-DAG:!dx.valver = !{![[valver:[0-9]+]]}
 ; Make sure module flags still exist and only have 1 operand left.
-; CHECK:!llvm.module.flags = !{{{![0-9]}}}
+; CHECK-DAG:!llvm.module.flags = !{{{![0-9]}}}
 ; Make sure validator version is 1.1.
-; CHECK:![[valver]] = !{i32 1, i32 1}
+; CHECK-DAG:![[valver]] = !{i32 1, i32 1}
 ; Make sure wchar_size still exist.
-; CHECK:!{i32 1, !"wchar_size", i32 4}
+; CHECK-DAG:!{i32 1, !"wchar_size", i32 4}
 
-!llvm.module.flags = !{!0, !1}
-!llvm.ident = !{!3}
+!llvm.module.flags = !{!0}
+!dx.valver = !{!1}
+!llvm.ident = !{!2}
 
 !0 = !{i32 1, !"wchar_size", i32 4}
-!1 = !{i32 6, !"dx.valver", !2}
-!2 = !{i32 1, i32 1}
-!3 = !{!"clang version 15.0.0 (https://github.com/llvm/llvm-project 71de12113a0661649ecb2f533fba4a2818a1ad68)"}
+!1 = !{i32 1, i32 1}
+!2 = !{!"clang version 15.0.0 (https://github.com/llvm/llvm-project 71de12113a0661649ecb2f533fba4a2818a1ad68)"}
Index: llvm/lib/Target/DirectX/DXILTranslateMetadata.cpp
===================================================================
--- llvm/lib/Target/DirectX/DXILTranslateMetadata.cpp
+++ llvm/lib/Target/DirectX/DXILTranslateMetadata.cpp
@@ -58,32 +58,6 @@
   return VersionTuple(Major, Minor);
 }
 
-static void cleanModuleFlags(Module &M) {
-  constexpr StringLiteral DeadKeys[] = {ValVerKey};
-  // Collect DeadKeys in ModuleFlags.
-  StringSet<> DeadKeySet;
-  for (auto &Key : DeadKeys) {
-    if (M.getModuleFlag(Key))
-      DeadKeySet.insert(Key);
-  }
-  if (DeadKeySet.empty())
-    return;
-
-  SmallVector<Module::ModuleFlagEntry, 8> ModuleFlags;
-  M.getModuleFlagsMetadata(ModuleFlags);
-  NamedMDNode *MDFlags = M.getModuleFlagsMetadata();
-  MDFlags->eraseFromParent();
-  // Add ModuleFlag which not dead.
-  for (auto &Flag : ModuleFlags) {
-    StringRef Key = Flag.Key->getString();
-    if (DeadKeySet.contains(Key))
-      continue;
-    M.addModuleFlag(Flag.Behavior, Key, Flag.Val);
-  }
-}
-
-static void cleanModule(Module &M) { cleanModuleFlags(M); }
-
 namespace {
 class DXILTranslateMetadata : public ModulePass {
 public:
@@ -101,13 +75,12 @@
 } // namespace
 
 bool DXILTranslateMetadata::runOnModule(Module &M) {
-  if (MDNode *ValVerMD = cast_or_null<MDNode>(M.getModuleFlag(ValVerKey))) {
-    auto ValVer = loadDXILValidatorVersion(ValVerMD);
+  if (NamedMDNode *ValVerMD = M.getNamedMetadata(ValVerKey)) {
+    VersionTuple ValVer = loadDXILValidatorVersion(ValVerMD->getOperand(0));
     if (!ValVer.empty())
       ValidatorVer = ValVer;
   }
   emitDXILValidatorVersion(M, ValidatorVer);
-  cleanModule(M);
   return false;
 }
 
Index: clang/test/CodeGenHLSL/validator_version.hlsl
===================================================================
--- clang/test/CodeGenHLSL/validator_version.hlsl
+++ clang/test/CodeGenHLSL/validator_version.hlsl
@@ -1,8 +1,11 @@
 // RUN: %clang -cc1 -S -triple dxil-pc-shadermodel6.3-library -S -emit-llvm -xhlsl -validator-version 1.1 -o - %s | FileCheck %s
+// RUN: %clang -cc1 -S -triple spirv32 -S -emit-llvm -xhlsl -validator-version 1.1 -o - %s | FileCheck %s --check-prefix=NOT_DXIL
 
-// CHECK:!"dx.valver", ![[valver:[0-9]+]]}
+// CHECK:!dx.valver = !{![[valver:[0-9]+]]}
 // CHECK:![[valver]] = !{i32 1, i32 1}
 
+// NOT_DXIL-NOT:!dx.valver
+
 float bar(float a, float b);
 
 float foo(float a, float b) {
Index: clang/lib/CodeGen/CGHLSLRuntime.cpp
===================================================================
--- clang/lib/CodeGen/CGHLSLRuntime.cpp
+++ clang/lib/CodeGen/CGHLSLRuntime.cpp
@@ -42,16 +42,18 @@
   IRBuilder<> B(M.getContext());
   MDNode *Val = MDNode::get(Ctx, {ConstantAsMetadata::get(B.getInt32(Major)),
                                   ConstantAsMetadata::get(B.getInt32(Minor))});
-  StringRef DxilValKey = "dx.valver";
-  M.addModuleFlag(llvm::Module::ModFlagBehavior::AppendUnique, DxilValKey, Val);
+  StringRef DXILValKey = "dx.valver";
+  auto *DXILValMD = M.getOrInsertNamedMetadata(DXILValKey);
+  DXILValMD->addOperand(Val);
 }
 } // namespace
 
 void CGHLSLRuntime::finishCodeGen() {
   auto &TargetOpts = CGM.getTarget().getTargetOpts();
-
   llvm::Module &M = CGM.getModule();
-  addDxilValVersion(TargetOpts.DxilValidatorVersion, M);
+  Triple T(M.getTargetTriple());
+  if (T.getArch() == Triple::ArchType::dxil)
+    addDxilValVersion(TargetOpts.DxilValidatorVersion, M);
 }
 
 void CGHLSLRuntime::annotateHLSLResource(const VarDecl *D, GlobalVariable *GV) {
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to