public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug go/61308] New: gccgo: ICE in Expression::check_bounds [GoSmith]
@ 2014-05-25  7:21 dvyukov at google dot com
  2014-07-08 21:29 ` [Bug go/61308] " ian at gcc dot gnu.org
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: dvyukov at google dot com @ 2014-05-25  7:21 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61308

            Bug ID: 61308
           Summary: gccgo: ICE in Expression::check_bounds [GoSmith]
           Product: gcc
           Version: 4.10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: go
          Assignee: ian at airs dot com
          Reporter: dvyukov at google dot com
                CC: cmang at google dot com

Created attachment 32851
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=32851&action=edit
reproducer

gcc version 4.10.0 20140516 (experimental) (GCC) 

The program is attached.
go build -compiler=gccgo main

go1: internal compiler error: in check_bounds, at
go/gofrontend/expressions.cc:480
0x5a3e71 Expression::check_bounds(Expression*, Location)
        ../../gcc/go/gofrontend/expressions.cc:480
0x5b89fd Array_index_expression::do_get_backend(Translate_context*)
        ../../gcc/go/gofrontend/expressions.cc:10263
0x5aeb06 Type_conversion_expression::do_get_backend(Translate_context*)
        ../../gcc/go/gofrontend/expressions.cc:3290
0x608076 Temporary_statement::do_get_backend(Translate_context*)
        ../../gcc/go/gofrontend/statements.cc:452
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] 8+ messages in thread

* [Bug go/61308] gccgo: ICE in Expression::check_bounds [GoSmith]
  2014-05-25  7:21 [Bug go/61308] New: gccgo: ICE in Expression::check_bounds [GoSmith] dvyukov at google dot com
@ 2014-07-08 21:29 ` ian at gcc dot gnu.org
  2014-07-08 21:39 ` dvyukov at google dot com
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: ian at gcc dot gnu.org @ 2014-07-08 21:29 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61308

--- Comment #1 from ian at gcc dot gnu.org <ian at gcc dot gnu.org> ---
Author: ian
Date: Tue Jul  8 21:28:17 2014
New Revision: 212372

URL: https://gcc.gnu.org/viewcvs?rev=212372&root=gcc&view=rev
Log:
    PR go/61308

compiler: Convert array start index before bounds checking.

Modified:
    trunk/gcc/go/gofrontend/expressions.cc


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug go/61308] gccgo: ICE in Expression::check_bounds [GoSmith]
  2014-05-25  7:21 [Bug go/61308] New: gccgo: ICE in Expression::check_bounds [GoSmith] dvyukov at google dot com
  2014-07-08 21:29 ` [Bug go/61308] " ian at gcc dot gnu.org
@ 2014-07-08 21:39 ` dvyukov at google dot com
  2014-08-05  2:51 ` ian at airs dot com
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: dvyukov at google dot com @ 2014-07-08 21:39 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61308

--- Comment #2 from Dmitry Vyukov <dvyukov at google dot com> ---
It would be great to accompany these fixes with regression tests. We have
significant amount of Go code in std lib and tests, but still we discover new
code patterns. Any new compiler functionality (like race detector or coverage
analysis) would benefit from extensive tests.
Does gccgo use tests from the main Go repo? The main repo looks like the best
place for them.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug go/61308] gccgo: ICE in Expression::check_bounds [GoSmith]
  2014-05-25  7:21 [Bug go/61308] New: gccgo: ICE in Expression::check_bounds [GoSmith] dvyukov at google dot com
  2014-07-08 21:29 ` [Bug go/61308] " ian at gcc dot gnu.org
  2014-07-08 21:39 ` dvyukov at google dot com
@ 2014-08-05  2:51 ` ian at airs dot com
  2014-08-05  2:58 ` ian at gcc dot gnu.org
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: ian at airs dot com @ 2014-08-05  2:51 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61308

--- Comment #3 from Ian Lance Taylor <ian at airs dot com> ---
Test committed to master repository as fixedbugs/bug489.go.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug go/61308] gccgo: ICE in Expression::check_bounds [GoSmith]
  2014-05-25  7:21 [Bug go/61308] New: gccgo: ICE in Expression::check_bounds [GoSmith] dvyukov at google dot com
                   ` (2 preceding siblings ...)
  2014-08-05  2:51 ` ian at airs dot com
@ 2014-08-05  2:58 ` ian at gcc dot gnu.org
  2014-08-05  3:11 ` ian at gcc dot gnu.org
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: ian at gcc dot gnu.org @ 2014-08-05  2:58 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61308

--- Comment #4 from ian at gcc dot gnu.org <ian at gcc dot gnu.org> ---
Author: ian
Date: Tue Aug  5 02:58:15 2014
New Revision: 213616

URL: https://gcc.gnu.org/viewcvs?rev=213616&root=gcc&view=rev
Log:
    PR go/61308
    PR go/61866

compiler: Don't cast index expr to int before bounds check.

This fixes http://gcc.gnu.org/PR61866 : on a 32-bit system,
casting an int64 index to int drops the upper 32 bits of the
value, and thus can cause an out-of-range index to appear to
be in range.

This undoes part of change 1318:fa6e0c716dba
(https://codereview.appspot.com/104610044) and therefore
breaks http://gcc.gnu.org/PR61308 again.  I have a separate
patch for that (http://codereview.appspot.com/122020043).  In
addition to undoing part of that change, this patch adds code
to avoid a compiler crash.  This changes PR61308 from a
compiler crash to an incorrect error message.

Modified:
    trunk/gcc/go/gofrontend/expressions.cc


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug go/61308] gccgo: ICE in Expression::check_bounds [GoSmith]
  2014-05-25  7:21 [Bug go/61308] New: gccgo: ICE in Expression::check_bounds [GoSmith] dvyukov at google dot com
                   ` (4 preceding siblings ...)
  2014-08-05  3:11 ` ian at gcc dot gnu.org
@ 2014-08-05  3:11 ` ian at gcc dot gnu.org
  2014-08-05  3:21 ` ian at airs dot com
  6 siblings, 0 replies; 8+ messages in thread
From: ian at gcc dot gnu.org @ 2014-08-05  3:11 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61308

--- Comment #6 from ian at gcc dot gnu.org <ian at gcc dot gnu.org> ---
Author: ian
Date: Tue Aug  5 03:11:17 2014
New Revision: 213618

URL: https://gcc.gnu.org/viewcvs?rev=213618&root=gcc&view=rev
Log:
    PR go/61308

compiler: Handle enclosing vars for function type in function lit.

This fixes a dumb bug in which the enclosing vars were
incorrectly cleared when a function literal contains a
reference to a function type.  The test for this will go into
the master repository in the change at
http://codereview.appspot.com/121200043 .

Modified:
    trunk/gcc/go/gofrontend/parse.cc


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug go/61308] gccgo: ICE in Expression::check_bounds [GoSmith]
  2014-05-25  7:21 [Bug go/61308] New: gccgo: ICE in Expression::check_bounds [GoSmith] dvyukov at google dot com
                   ` (3 preceding siblings ...)
  2014-08-05  2:58 ` ian at gcc dot gnu.org
@ 2014-08-05  3:11 ` ian at gcc dot gnu.org
  2014-08-05  3:11 ` ian at gcc dot gnu.org
  2014-08-05  3:21 ` ian at airs dot com
  6 siblings, 0 replies; 8+ messages in thread
From: ian at gcc dot gnu.org @ 2014-08-05  3:11 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61308

--- Comment #5 from ian at gcc dot gnu.org <ian at gcc dot gnu.org> ---
Author: ian
Date: Tue Aug  5 03:10:53 2014
New Revision: 213617

URL: https://gcc.gnu.org/viewcvs?rev=213617&root=gcc&view=rev
Log:
    PR go/61308

compiler: Handle enclosing vars for function type in function lit.

This fixes a dumb bug in which the enclosing vars were
incorrectly cleared when a function literal contains a
reference to a function type.  The test for this will go into
the master repository in the change at
http://codereview.appspot.com/121200043 .

Modified:
    branches/gcc-4_9-branch/gcc/go/gofrontend/parse.cc


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug go/61308] gccgo: ICE in Expression::check_bounds [GoSmith]
  2014-05-25  7:21 [Bug go/61308] New: gccgo: ICE in Expression::check_bounds [GoSmith] dvyukov at google dot com
                   ` (5 preceding siblings ...)
  2014-08-05  3:11 ` ian at gcc dot gnu.org
@ 2014-08-05  3:21 ` ian at airs dot com
  6 siblings, 0 replies; 8+ messages in thread
From: ian at airs dot com @ 2014-08-05  3:21 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61308

Ian Lance Taylor <ian at airs dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |FIXED

--- Comment #7 from Ian Lance Taylor <ian at airs dot com> ---
Fixed.


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2014-08-05  3:21 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-25  7:21 [Bug go/61308] New: gccgo: ICE in Expression::check_bounds [GoSmith] dvyukov at google dot com
2014-07-08 21:29 ` [Bug go/61308] " ian at gcc dot gnu.org
2014-07-08 21:39 ` dvyukov at google dot com
2014-08-05  2:51 ` ian at airs dot com
2014-08-05  2:58 ` ian at gcc dot gnu.org
2014-08-05  3:11 ` ian at gcc dot gnu.org
2014-08-05  3:11 ` ian at gcc dot gnu.org
2014-08-05  3:21 ` ian at airs 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).