Skip to content

cmd/compile: internal compiler error: constant type mismatch when comparing two unsafe.Pointer rvalues #21221

@vibhavp

Description

@vibhavp

What version of Go are you using (go version)?

go version go1.8.3 linux/amd64

What operating system and processor architecture are you using (go env)?

GOARCH="amd64"
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"

What did you do?

https://play.golang.org/p/MTZIms61wt

package main

import "unsafe"

func main() {
	println(unsafe.Pointer(uintptr(0)) == unsafe.Pointer(nil))
}

What did you expect to see?

go build should compile correctly and produce a binary that outputs true

What did you see instead?

The compiler errors out with the following message:

# command-line-arguments
./size.go:6: internal compiler error: constant type mismatch unsafe.Pointer(1) unsafe.Pointer(7)

goroutine 1 [running]:
runtime/debug.Stack(0x0, 0x0, 0x0)
	/usr/lib/go/src/runtime/debug/stack.go:24 +0x79
cmd/compile/internal/gc.Fatalf(0xacc786, 0x24, 0xc42036af68, 0x4, 0x4)
	/usr/lib/go/src/cmd/compile/internal/gc/subr.go:167 +0x226
cmd/compile/internal/gc.evconst(0xc4203570e0)
	/usr/lib/go/src/cmd/compile/internal/gc/const.go:871 +0x35bb
cmd/compile/internal/gc.typecheck1(0xc4203570e0, 0x2, 0x0)
	/usr/lib/go/src/cmd/compile/internal/gc/typecheck.go:706 +0x219c
cmd/compile/internal/gc.typecheck(0xc4203570e0, 0x2, 0x0)
	/usr/lib/go/src/cmd/compile/internal/gc/typecheck.go:188 +0x608
cmd/compile/internal/gc.typecheckslice(0xc420078538, 0x1, 0x1, 0x2)
	/usr/lib/go/src/cmd/compile/internal/gc/typecheck.go:49 +0x4e
cmd/compile/internal/gc.typecheck1(0xc420356cf0, 0x1, 0xc4200f4f30)
	/usr/lib/go/src/cmd/compile/internal/gc/typecheck.go:1862 +0x58fa
cmd/compile/internal/gc.typecheck1(0xc420356cf0, 0x1, 0x4)
	/usr/lib/go/src/cmd/compile/internal/gc/typecheck.go:1203 +0x45c7
cmd/compile/internal/gc.typecheck(0xc420356cf0, 0x1, 0x3)
	/usr/lib/go/src/cmd/compile/internal/gc/typecheck.go:188 +0x608
cmd/compile/internal/gc.typecheckslice(0xc420078540, 0x1, 0x1, 0x1)
	/usr/lib/go/src/cmd/compile/internal/gc/typecheck.go:49 +0x4e
cmd/compile/internal/gc.Main()
	/usr/lib/go/src/cmd/compile/internal/gc/main.go:374 +0x1938
main.main()
	/usr/lib/go/src/cmd/compile/main.go:50 +0xfe

Metadata

Metadata

Assignees

No one assigned

    Labels

    FrozenDueToAgeNeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.release-blocker

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions