[clang] [HLSL] replace std::unordered_map with DenseMap (PR #168739)

Nathan Gauër via cfe-commits cfe-commits at lists.llvm.org
Wed Nov 19 08:56:37 PST 2025


https://github.com/Keenuts updated https://github.com/llvm/llvm-project/pull/168739

>From ef87cb6635cf0ecb3272020f43fbf1ed3c86cdfe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nathan=20Gau=C3=ABr?= <brioche at google.com>
Date: Wed, 19 Nov 2025 17:51:14 +0100
Subject: [PATCH] [HLSL] replace std::unordered_map with DenseMap

Broke some builds because of a missing include. Changing to a DenseMap
and adding the missing include.
---
 clang/lib/CodeGen/CGHLSLRuntime.cpp | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/clang/lib/CodeGen/CGHLSLRuntime.cpp b/clang/lib/CodeGen/CGHLSLRuntime.cpp
index 0371af417bdab..9403d26576eb0 100644
--- a/clang/lib/CodeGen/CGHLSLRuntime.cpp
+++ b/clang/lib/CodeGen/CGHLSLRuntime.cpp
@@ -27,6 +27,7 @@
 #include "clang/AST/Type.h"
 #include "clang/Basic/TargetOptions.h"
 #include "clang/Frontend/FrontendDiagnostic.h"
+#include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/ScopeExit.h"
 #include "llvm/ADT/SmallString.h"
 #include "llvm/ADT/SmallVector.h"
@@ -905,7 +906,7 @@ void CGHLSLRuntime::emitEntryFunction(const FunctionDecl *FD,
     OB.emplace_back("convergencectrl", bundleArgs);
   }
 
-  std::unordered_map<const DeclaratorDecl *, llvm::Value *> OutputSemantic;
+  llvm::DenseMap<const DeclaratorDecl *, llvm::Value *> OutputSemantic;
 
   unsigned SRetOffset = 0;
   for (const auto &Param : Fn->args()) {
@@ -913,7 +914,7 @@ void CGHLSLRuntime::emitEntryFunction(const FunctionDecl *FD,
       SRetOffset = 1;
       llvm::Type *VarType = Param.getParamStructRetType();
       llvm::Value *Var = B.CreateAlloca(VarType);
-      OutputSemantic.emplace(FD, Var);
+      OutputSemantic.try_emplace(FD, Var);
       Args.push_back(Var);
       continue;
     }
@@ -949,7 +950,7 @@ void CGHLSLRuntime::emitEntryFunction(const FunctionDecl *FD,
   CI->setCallingConv(Fn->getCallingConv());
 
   if (Fn->getReturnType() != CGM.VoidTy)
-    OutputSemantic.emplace(FD, CI);
+    OutputSemantic.try_emplace(FD, CI);
 
   for (auto &[Decl, Source] : OutputSemantic) {
     AllocaInst *AI = dyn_cast<AllocaInst>(Source);



More information about the cfe-commits mailing list