Skip to content

Commit b611cbc

Browse files
committed
compiler: treat unsafe.Pointer inside map keys like any other pointer
Pointers are pointers, but unsafe.Pointer was not treated as such and forced a map lookup using reflect. This commit fixes that.
1 parent 180662f commit b611cbc

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

compiler/map.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,9 @@ func (b *builder) createMapIteratorNext(rangeVal ssa.Value, llvmRangeVal, it llv
250250
func hashmapIsBinaryKey(keyType types.Type) bool {
251251
switch keyType := keyType.(type) {
252252
case *types.Basic:
253+
if keyType.Kind() == types.UnsafePointer {
254+
return true
255+
}
253256
return keyType.Info()&(types.IsBoolean|types.IsInteger) != 0
254257
case *types.Pointer:
255258
return true

0 commit comments

Comments
 (0)