public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug go/61204] New: gccgo: ICE in in fold_convert_loc
@ 2014-05-16 19:08 dvyukov at google dot com
2014-12-10 19:39 ` [Bug go/61204] gccgo: ICE in in fold_convert_loc [GoSmith] cmang at google dot com
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: dvyukov at google dot com @ 2014-05-16 19:08 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61204
Bug ID: 61204
Summary: gccgo: ICE in in fold_convert_loc
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: go
Assignee: ian at airs dot com
Reporter: dvyukov at google dot com
$ gccgo -v
Using built-in specs.
COLLECT_GCC=gccgo
COLLECT_LTO_WRAPPER=libexec/gcc/x86_64-unknown-linux-gnu/4.10.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --enable-languages=c,c++,go --disable-bootstrap
--enable-checking=yes --disable-multilib --prefix=gcc_trunk/install
Thread model: posix
gcc version 4.10.0 20140516 (experimental) (GCC)
The program is:
package main
func main() {
type id2 chan map[uintptr]string
type id3 [0]string
type id4 float64
_ = <-<-make(chan id2, cap(id3([0]string{})))
type id5 id2
_, _ = <-<-make(chan chan string)
var id6 id5 = id5(id2(make(chan map[uintptr]string, ((1) + ((<-make(chan
int, ((1) + ((1) + (([]int{})[((1) * (1))]))))) * ((1) + ((((((([]int{})[1]) +
(<-make(chan int))) * ((<-make(chan int)) + (1))) * (<-<-<-make(chan chan chan
int, 1))) + (1)) * (<-make(chan int)))))))))
type id7 id3
_, _, _ = map[id4]bool{}, ([]float64{})[1], (((<-<-<-<-make(chan chan chan
chan int, ((<-<-make(chan chan int)) * (1)))) * (1)) +
(([]int{})[((((<-<-<-<-<-make(chan chan chan chan chan int, 1)) + ((1) *
(((<-<-make(chan chan []int))[1]) + (1)))) * ((([]int{})[<-<-make(chan chan
int, ((1)*(1)))]) + ((<-<-make(chan chan int)) * ((1) + (<-make(chan int))))))
* (<-make(chan int, 1)))]))
id8 := id7(id3([0]string{}))
_, _, _, id8 = [0]int{}, <-<-make(chan chan [0]int), ((<-<-make(chan chan
int, ([]int{})[([]int{})[<-make(chan int)]])) + (<-<-([]chan chan
int{})[<-make(chan int, (<-<-<-make(chan chan chan []int, 1))[<-make(chan int,
1)])])), id7(id3([0]string{}))
_ = id8
_ = id6
}
$ go build -compiler=gccgo src.go
# command-line-arguments
go1: internal compiler error: in fold_convert_loc, at fold-const.c:2072
0x7ce963 fold_convert_loc(unsigned int, tree_node*, tree_node*)
../../gcc/fold-const.c:2072
0x5c6bc5 Gcc_backend::temporary_variable(Bfunction*, Bblock*, Btype*,
Bexpression*, bool, Location, Bstatement**)
../../gcc/go/go-gcc.cc:2483
0x6080a4 Temporary_statement::do_get_backend(Translate_context*)
../../gcc/go/gofrontend/statements.cc:460
0x5db097 Block::get_backend(Translate_context*)
../../gcc/go/gofrontend/gogo.cc:5454
0x60741c Block_statement::do_get_backend(Translate_context*)
../../gcc/go/gofrontend/statements.cc:1811
0x5db097 Block::get_backend(Translate_context*)
../../gcc/go/gofrontend/gogo.cc:5454
0x5dc925 Function::build(Gogo*, Named_object*)
../../gcc/go/gofrontend/gogo.cc:5062
0x5ddc57 Named_object::get_backend(Gogo*, std::vector<Bexpression*,
std::allocator<Bexpression*> >&, std::vector<Btype*, std::allocator<Btype*> >&,
std::vector<Bfunction*, std::allocator<Bfunction*> >&)
../../gcc/go/gofrontend/gogo.cc:6753
0x5e2b5c Gogo::write_globals()
../../gcc/go/gofrontend/gogo.cc:1136
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug go/61204] gccgo: ICE in in fold_convert_loc [GoSmith]
2014-05-16 19:08 [Bug go/61204] New: gccgo: ICE in in fold_convert_loc dvyukov at google dot com
@ 2014-12-10 19:39 ` cmang at google dot com
2015-01-07 16:15 ` ian at gcc dot gnu.org
2015-01-13 16:33 ` cmang at google dot com
2 siblings, 0 replies; 4+ messages in thread
From: cmang at google dot com @ 2014-12-10 19:39 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61204
Chris Manghane <cmang at google dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed| |2014-12-10
CC| |cmang at google dot com
Ever confirmed|0 |1
--- Comment #1 from Chris Manghane <cmang at google dot com> ---
This smaller version of this program is:
package main
func main() {
type t [0]int
var v t
v, _ = [0]int{}, 0
_ = v
}
which fails because [0]int is a zero-sized type and the temporary variable for
that holds [0]int{} cannot be initialized. This patch avoids initializing
zero-sized temporaries:
Index: gcc/go/go-gcc.cc
======================================================================
--- a/gcc/go/go-gcc.cc
+++ b/gcc/go/go-gcc.cc
@@ -2505,7 +2505,7 @@ Gcc_backend::temporary_variable(Bfunction* function,
Bblock* bblock,
BIND_EXPR_VARS(bind_tree) = BLOCK_VARS(block_tree);
}
- if (init_tree != NULL_TREE)
+ if (this->type_size(btype) != 0 && init_tree != NULL_TREE)
DECL_INITIAL(var) = fold_convert_loc(location.gcc_location(), type_tree,
init_tree);
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug go/61204] gccgo: ICE in in fold_convert_loc [GoSmith]
2014-05-16 19:08 [Bug go/61204] New: gccgo: ICE in in fold_convert_loc dvyukov at google dot com
2014-12-10 19:39 ` [Bug go/61204] gccgo: ICE in in fold_convert_loc [GoSmith] cmang at google dot com
@ 2015-01-07 16:15 ` ian at gcc dot gnu.org
2015-01-13 16:33 ` cmang at google dot com
2 siblings, 0 replies; 4+ messages in thread
From: ian at gcc dot gnu.org @ 2015-01-07 16:15 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61204
--- Comment #2 from ian at gcc dot gnu.org <ian at gcc dot gnu.org> ---
Author: ian
Date: Wed Jan 7 16:14:50 2015
New Revision: 219316
URL: https://gcc.gnu.org/viewcvs?rev=219316&root=gcc&view=rev
Log:
PR go/61204
* go-gcc.cc (Gcc_backend::temporary_variable): Don't initialize
zero-sized variable.
Modified:
trunk/gcc/go/ChangeLog
trunk/gcc/go/go-gcc.cc
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug go/61204] gccgo: ICE in in fold_convert_loc [GoSmith]
2014-05-16 19:08 [Bug go/61204] New: gccgo: ICE in in fold_convert_loc dvyukov at google dot com
2014-12-10 19:39 ` [Bug go/61204] gccgo: ICE in in fold_convert_loc [GoSmith] cmang at google dot com
2015-01-07 16:15 ` ian at gcc dot gnu.org
@ 2015-01-13 16:33 ` cmang at google dot com
2 siblings, 0 replies; 4+ messages in thread
From: cmang at google dot com @ 2015-01-13 16:33 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61204
Chris Manghane <cmang at google dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
--- Comment #3 from Chris Manghane <cmang at google dot com> ---
Fixed in trunk and test case added to Go testsuite.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-01-13 16:33 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-16 19:08 [Bug go/61204] New: gccgo: ICE in in fold_convert_loc dvyukov at google dot com
2014-12-10 19:39 ` [Bug go/61204] gccgo: ICE in in fold_convert_loc [GoSmith] cmang at google dot com
2015-01-07 16:15 ` ian at gcc dot gnu.org
2015-01-13 16:33 ` cmang at google dot com
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).