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).