Skip to content

cmd/compile: internal compiler error: got untyped bool for autotmp #17551

@wendigo

Description

@wendigo

Please answer these questions before submitting your issue. Thanks!

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

go version devel +eb15cf1 Sat Oct 22 01:23:14 2016 +0000 darwin/amd64

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

GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/mateusz.gajewski/Desktop/Projects/"
GORACE=""
GOROOT="/usr/local/Cellar/go/HEAD-eb15cf1/libexec"
GOTOOLDIR="/usr/local/Cellar/go/HEAD-eb15cf1/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/43/1y0rrqr55zq3f8cj5wpkt1kmhc7r33/T/go-build002271164=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
PKG_CONFIG="pkg-config"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"

What did you do?

This is minimal example I've been able to create to reproduce this error (works in go 1.7.3):

package main
import "fmt"

func main() {
        _, x := X()
        fmt.Printf("x = %v\n", x)
}

func X() (i int, ok bool) {
        ii := int(1)
        return ii, 0 <= ii && ii <= 0x7fffffff
}

What did you expect to see?

x = true

What did you see instead?

./main.go:11: internal compiler error: got untyped bool for autotmp_7

goroutine 1 [running]:
runtime/debug.Stack(0x0, 0x0, 0x0)
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/runtime/debug/stack.go:24 +0x79
cmd/compile/internal/gc.Fatalf(0x644878, 0xd, 0xc42039b580, 0x2, 0x2)
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/internal/gc/subr.go:165 +0x226
cmd/compile/internal/gc.typecheckdef(0xc420408b40, 0xc420097140)
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/internal/gc/typecheck.go:3779 +0x3e6
cmd/compile/internal/gc.typecheck1(0xc420408b40, 0x22, 0x0)
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/internal/gc/typecheck.go:266 +0xca51
cmd/compile/internal/gc.typecheck(0xc420408b40, 0x22, 0xc42039c558)
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/internal/gc/typecheck.go:188 +0x602
cmd/compile/internal/gc.typecheckas(0xc420408bd0)
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/internal/gc/typecheck.go:3253 +0x78
cmd/compile/internal/gc.typecheck1(0xc420408bd0, 0x1, 0x690898)
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/internal/gc/typecheck.go:1963 +0x37ce
cmd/compile/internal/gc.typecheck(0xc420408bd0, 0x1, 0xc420408a20)
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/internal/gc/typecheck.go:188 +0x602
cmd/compile/internal/gc.copyexpr(0xc420408a20, 0xc420096840, 0xc42038db10, 0x10)
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/internal/gc/subr.go:1336 +0x68
cmd/compile/internal/gc.cheapexpr(0xc420408a20, 0xc42038db10, 0x10)
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/internal/gc/subr.go:1350 +0x5d
cmd/compile/internal/gc.safeexpr(0xc420408a20, 0xc42038db10, 0xc42038d0e0)
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/internal/gc/subr.go:1330 +0x1fd
cmd/compile/internal/gc.walkexprlistsafe(0xc42007cef0, 0x2, 0x2, 0xc42038db10)
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/internal/gc/walk.go:401 +0x56
cmd/compile/internal/gc.walkstmt(0xc42038db00, 0xc42038d9e0)
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/internal/gc/walk.go:337 +0x478
cmd/compile/internal/gc.walkstmtlist(0xc420385f80, 0x5, 0x8)
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/internal/gc/walk.go:80 +0x44
cmd/compile/internal/gc.walk(0xc42038cbd0)
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/internal/gc/walk.go:65 +0x1c0
cmd/compile/internal/gc.compile(0xc42038cbd0)
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/internal/gc/pgen.go:347 +0x1c5
cmd/compile/internal/gc.funccompile(0xc42038cbd0)
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/internal/gc/dcl.go:1303 +0xdc
cmd/compile/internal/gc.Main()
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/internal/gc/main.go:476 +0x1f50
main.main()
    /usr/local/Cellar/go/HEAD-eb15cf1/libexec/src/cmd/compile/main.go:47 +0x15d

Works with:

  • explicit type: return ii, bool(0 <= ii && ii <= 0x7fffffff)
  • X signature: func X() (int, bool)

Metadata

Metadata

Assignees

No one assigned

    Labels

    FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions