Closed griesemer closed 9 years ago
gccgo x.go with x.go: http://play.golang.org/p/M56xbpgyJq The compiler produces a series of (correct) error messages and then reports an internal error: gccgo x.go x.go:14:2: error: expected call expression go complex(1, 2) ^ x.go:15:2: error: expected call expression go imag(1i) ^ x.go:17:2: error: expected call expression go make([]int, 10) ^ x.go:18:2: error: expected call expression go new(int) ^ x.go:19:2: error: expected call expression go real(1i) ^ x.go:20:2: error: expected call expression go unsafe.Alignof(a) ^ x.go:21:2: error: expected call expression go unsafe.Offsetof(s.f) ^ x.go:22:2: error: expected call expression go unsafe.Sizeof(a) ^ x.go:37:2: error: expected call expression defer complex(1, 2) ^ x.go:38:2: error: expected call expression defer imag(1i) ^ x.go:40:2: error: expected call expression defer make([]int, 10) ^ x.go:41:2: error: expected call expression defer new(int) ^ x.go:42:2: error: expected call expression defer real(1i) ^ x.go:43:2: error: expected call expression defer unsafe.Alignof(a) ^ x.go:44:2: error: expected call expression defer unsafe.Offsetof(s.f) ^ x.go:45:2: error: expected call expression defer unsafe.Sizeof(a) ^ x.go:12:2: error: argument 2 has incompatible type go append(a, 0) ^ x.go:35:2: error: argument 2 has incompatible type defer append(a, 0) ^ go1: internal compiler error: in build_thunk, at go/gofrontend/statements.cc:2474 0x590743 Thunk_statement::build_thunk(Gogo*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /tmp/go-build-release/gccgo-srcdir/gcc/go/gofrontend/statements.cc:2474 0x590df3 Thunk_statement::simplify_statement(Gogo*, Named_object*, Block*) /tmp/go-build-release/gccgo-srcdir/gcc/go/gofrontend/statements.cc:2149 0x5911ef Simplify_thunk_traverse::block(Block*) /tmp/go-build-release/gccgo-srcdir/gcc/go/gofrontend/statements.cc:2067 0x55843b Block::traverse(Traverse*) /tmp/go-build-release/gccgo-srcdir/gcc/go/gofrontend/gogo.cc:3620 0x558405 Block::traverse(Traverse*) /tmp/go-build-release/gccgo-srcdir/gcc/go/gofrontend/gogo.cc:3720 0x5586dd Function::traverse(Traverse*) /tmp/go-build-release/gccgo-srcdir/gcc/go/gofrontend/gogo.cc:3341 0x5871a0 Simplify_thunk_traverse::function(Named_object*) /tmp/go-build-release/gccgo-srcdir/gcc/go/gofrontend/statements.cc:2048 0x55afdb Bindings::traverse(Traverse*, bool) /tmp/go-build-release/gccgo-srcdir/gcc/go/gofrontend/gogo.cc:5191 0x55b0e1 Gogo::traverse(Traverse*) /tmp/go-build-release/gccgo-srcdir/gcc/go/gofrontend/gogo.cc:1398 0x58ac9b Gogo::simplify_thunk_statements() /tmp/go-build-release/gccgo-srcdir/gcc/go/gofrontend/statements.cc:2078 0x54c74e go_parse_input_files(char const**, unsigned int, bool, bool) /tmp/go-build-release/gccgo-srcdir/gcc/go/gofrontend/go.cc:124 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://go.ext.google.com/go/> for instructions. Some additional observations (unrelated to the internal error): - The error message "expected call expression" is somewhat misleading: The expressions are calls, they are just not permitted in the go/defer context. - The error message "x.go:12:2: error: argument 2 has incompatible type" seems wrong. The 2nd argument for append is correct for the specific append. If the error message refers to the go/defer statement, it's also wrong: there's no "2nd argument".
Comment 1:
Fixed on tip.
Status changed to Fixed.