Переглянути джерело

Use SmallMapVector for deterministic ordering from GetOpFuncList (#2857)

Tex Riddell 5 роки тому
батько
коміт
f2880572dc
2 змінених файлів з 4 додано та 4 видалено
  1. 3 3
      include/dxc/DXIL/DxilOperations.h
  2. 1 1
      lib/DXIL/DxilOperations.cpp

+ 3 - 3
include/dxc/DXIL/DxilOperations.h

@@ -24,7 +24,7 @@ class CallInst;
 }
 #include "llvm/IR/Attributes.h"
 #include "llvm/ADT/StringRef.h"
-#include "llvm/ADT/DenseMap.h"
+#include "llvm/ADT/MapVector.h"
 
 #include "DxilConstants.h"
 #include <unordered_map>
@@ -44,7 +44,7 @@ public:
   void RefreshCache();
 
   llvm::Function *GetOpFunc(OpCode OpCode, llvm::Type *pOverloadType);
-  const llvm::SmallDenseMap<llvm::Type *, llvm::Function *, 8> &GetOpFuncList(OpCode OpCode) const;
+  const llvm::SmallMapVector<llvm::Type *, llvm::Function *, 8> &GetOpFuncList(OpCode OpCode) const;
   void RemoveFunction(llvm::Function *F);
   llvm::Type *GetOverloadType(OpCode OpCode, llvm::Function *F);
   llvm::LLVMContext &GetCtx() { return m_Ctx; }
@@ -138,7 +138,7 @@ private:
   llvm::Type *m_pCBufferRetType[kNumTypeOverloads];
 
   struct OpCodeCacheItem {
-    llvm::SmallDenseMap<llvm::Type *, llvm::Function *, 8> pOverloads;
+    llvm::SmallMapVector<llvm::Type *, llvm::Function *, 8> pOverloads;
   };
   OpCodeCacheItem m_OpCodeClassCache[(unsigned)OpCodeClass::NumOpClasses];
   std::unordered_map<const llvm::Function *, OpCodeClass> m_FunctionToOpClass;

+ 1 - 1
lib/DXIL/DxilOperations.cpp

@@ -1341,7 +1341,7 @@ Function *OP::GetOpFunc(OpCode opCode, Type *pOverloadType) {
   return F;
 }
 
-const SmallDenseMap<llvm::Type *, llvm::Function *, 8> &
+const SmallMapVector<llvm::Type *, llvm::Function *, 8> &
 OP::GetOpFuncList(OpCode opCode) const {
   DXASSERT(0 <= (unsigned)opCode && opCode < OpCode::NumOpCodes,
            "otherwise caller passed OOB OpCode");