Explorar o código

[spirv] Fix the function for hashing QualType.

Also fiexed typo in classof method of HybridPointerType.
Ehsan Nasiri %!s(int64=6) %!d(string=hai) anos
pai
achega
094b400eb6

+ 1 - 1
tools/clang/include/clang/SPIRV/SPIRVContext.h

@@ -144,7 +144,7 @@ struct QualTypeDenseMapInfo {
   static inline QualType getEmptyKey() { return {}; }
   static inline QualType getTombstoneKey() { return {}; }
   static unsigned getHashValue(const QualType &Val) {
-    return static_cast<unsigned>(Val.getTypePtr()->getScalarTypeKind()) * 37U;
+    return llvm::hash_combine(Val.getTypePtr(), Val.getCVRQualifiers());
   }
   static bool isEqual(const QualType &LHS, const QualType &RHS) {
     return LHS == RHS;

+ 3 - 1
tools/clang/include/clang/SPIRV/SpirvType.h

@@ -418,7 +418,9 @@ public:
   HybridPointerType(QualType pointee, spv::StorageClass sc)
       : HybridType(TK_HybridPointer), pointeeType(pointee), storageClass(sc) {}
 
-  static bool classof(const SpirvType *t) { return t->getKind() == TK_Pointer; }
+  static bool classof(const SpirvType *t) {
+    return t->getKind() == TK_HybridPointer;
+  }
 
   QualType getPointeeType() const { return pointeeType; }
   spv::StorageClass getStorageClass() const { return storageClass; }