@@ -407,13 +407,6 @@ struct SILDeclRef {
407
407
// / Return the expected linkage of this declaration.
408
408
SILLinkage getLinkage (ForDefinition_t forDefinition) const ;
409
409
410
- // / Return the hash code for the SIL declaration.
411
- friend llvm::hash_code hash_value (const SILDeclRef &ref) {
412
- return llvm::hash_combine (
413
- ref.loc .getOpaqueValue (), static_cast <int >(ref.kind ), ref.isForeign ,
414
- ref.distributedThunk , ref.defaultArgIndex , ref.isAsyncLetClosure );
415
- }
416
-
417
410
bool operator ==(SILDeclRef rhs) const {
418
411
return loc.getOpaqueValue () == rhs.loc .getOpaqueValue () &&
419
412
kind == rhs.kind && isForeign == rhs.isForeign &&
@@ -613,6 +606,24 @@ struct SILDeclRef {
613
606
614
607
bool hasAsync () const ;
615
608
609
+ // / Return the hash code for the SIL declaration.
610
+ friend llvm::hash_code hash_value (swift::SILDeclRef ref) {
611
+ return llvm::hash_combine (
612
+ llvm::hash_value (ref.loc .getOpaqueValue ()),
613
+ llvm::hash_value (unsigned (ref.kind )),
614
+ llvm::hash_value (
615
+ (ref.kind == swift::SILDeclRef::Kind::DefaultArgGenerator)
616
+ ? ref.defaultArgIndex
617
+ : 0 ),
618
+ llvm::hash_value (ref.isForeign ),
619
+ llvm::hash_value (ref.pointer .getOpaqueValue ()),
620
+ llvm::hash_value (ref.distributedThunk ),
621
+ llvm::hash_value (unsigned (ref.backDeploymentKind )),
622
+ llvm::hash_value (ref.isKnownToBeLocal ),
623
+ llvm::hash_value (ref.isRuntimeAccessible ),
624
+ llvm::hash_value (ref.isAsyncLetClosure ));
625
+ }
626
+
616
627
private:
617
628
friend struct llvm ::DenseMapInfo<swift::SILDeclRef>;
618
629
// / Produces a SILDeclRef from an opaque value.
@@ -660,19 +671,7 @@ template<> struct DenseMapInfo<swift::SILDeclRef> {
660
671
nullptr );
661
672
}
662
673
static unsigned getHashValue (swift::SILDeclRef Val) {
663
- unsigned h1 = PointerInfo::getHashValue (Val.loc .getOpaqueValue ());
664
- unsigned h2 = UnsignedInfo::getHashValue (unsigned (Val.kind ));
665
- unsigned h3 = (Val.kind == Kind::DefaultArgGenerator)
666
- ? UnsignedInfo::getHashValue (Val.defaultArgIndex )
667
- : 0 ;
668
- unsigned h4 = UnsignedInfo::getHashValue (Val.isForeign );
669
- unsigned h5 = PointerInfo::getHashValue (Val.pointer .getOpaqueValue ());
670
- unsigned h6 = UnsignedInfo::getHashValue (Val.distributedThunk );
671
- unsigned h7 = UnsignedInfo::getHashValue (unsigned (Val.backDeploymentKind ));
672
- unsigned h8 = UnsignedInfo::getHashValue (Val.isKnownToBeLocal );
673
- unsigned h9 = UnsignedInfo::getHashValue (Val.isRuntimeAccessible );
674
- return h1 ^ (h2 << 4 ) ^ (h3 << 9 ) ^ (h4 << 7 ) ^ (h5 << 11 ) ^ (h6 << 8 ) ^
675
- (h7 << 10 ) ^ (h8 << 13 ) ^ (h9 << 15 );
674
+ return hash_value (Val);
676
675
}
677
676
static bool isEqual (swift::SILDeclRef const &LHS,
678
677
swift::SILDeclRef const &RHS) {
0 commit comments