public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug debug/63342] New: [5 Regression] ICE in loc_list_from_tree, at dwarf2out.c:14698
@ 2014-09-23 12:52 jtaylor.debian at googlemail dot com
  2014-09-29 15:21 ` [Bug debug/63342] " jakub at gcc dot gnu.org
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: jtaylor.debian at googlemail dot com @ 2014-09-23 12:52 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 63342
           Summary: [5 Regression] ICE in loc_list_from_tree, at
                    dwarf2out.c:14698
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: debug
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jtaylor.debian at googlemail dot com

Created attachment 33538
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33538&action=edit
preprocessed source

with gcc 5 current svn rev 215503 attached file creates an ICE.
Bisection showed it was caused by rev 214899 the fix to PR60655.

$ gcc-5.0 -v -g -O2 -std=c99   -fopenmp -c image_iqe.i  -fPIC
Using built-in specs.
COLLECT_GCC=/scratch/jtaylor/gcc/local-trunk/bin//gcc
Target: x86_64-unknown-linux-gnu
Configured with: /tmp/jtaylor/gcc.git/configure --disable-werror
--enable-languages=c,c++,fortran --enable-tls
--prefix=/scratch/jtaylor/gcc/local-trunk --with-gmp=/usr --with-mpfr=/usr
--with-mpc=/usr --with-cloog=/usr --with-ppl=/usr --with-isl=/usr
--disable-bootstrap
Thread model: posix
gcc version 5.0.0 20140923 (experimental) (GCC) 
COLLECT_GCC_OPTIONS='-ftrack-macro-expansion=2' '-v' '-g' '-O2' '-std=c99'
'-fopenmp' '-c' '-fPIC' '-o'
'/scratch/jtaylor/data/ccache/4/2/b32515ef366d48ae6a990ef3c32265-38727.o.tmp.ga014413.9629'
'-mtune=generic' '-march=x86-64' '-pthread'

/scratch/jtaylor/gcc/local-trunk/libexec/gcc/x86_64-unknown-linux-gnu/5.0.0/cc1
-fpreprocessed image_iqe.i -quiet -dumpbase image_iqe.i -mtune=generic
-march=x86-64 -auxbase-strip
/scratch/jtaylor/data/ccache/4/2/b32515ef366d48ae6a990ef3c32265-38727.o.tmp.ga014413.9629
-g -O2 -std=c99 -version -ftrack-macro-expansion=2 -fopenmp -fPIC -o
/tmp/ccq5QE77.s
GNU C (GCC) version 5.0.0 20140923 (experimental) (x86_64-unknown-linux-gnu)
    compiled by GNU C version 4.8.2, GMP version 5.1.3, MPFR version 3.1.2-p3,
MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
GNU C (GCC) version 5.0.0 20140923 (experimental) (x86_64-unknown-linux-gnu)
    compiled by GNU C version 4.8.2, GMP version 5.1.3, MPFR version 3.1.2-p3,
MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: b7b329711fd6ccb5f987647fb148652d
image_iqe.c: In function ‘g2efunc’:
image_iqe.c:90:1: internal compiler error: in loc_list_from_tree, at
dwarf2out.c:14698
 }
 ^
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
>From gcc-bugs-return-462337-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Tue Sep 23 13:16:19 2014
Return-Path: <gcc-bugs-return-462337-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 3584 invoked by alias); 23 Sep 2014 13:16:18 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 3485 invoked by uid 48); 23 Sep 2014 13:16:13 -0000
From: "boger at us dot ibm.com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug go/60406] recover.go: test13reflect2 test failure
Date: Tue, 23 Sep 2014 13:16:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: go
X-Bugzilla-Version: 4.9.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: boger at us dot ibm.com
X-Bugzilla-Status: NEW
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: ian at airs dot com
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-60406-4-vGgnvXE2I3@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-60406-4@http.gcc.gnu.org/bugzilla/>
References: <bug-60406-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-09/txt/msg02171.txt.bz2
Content-length: 2554

https://gcc.gnu.org/bugzilla/show_bug.cgi?id`406

--- Comment #9 from boger at us dot ibm.com ---
The patch to fix the recover.go problem causes significant regression in gccgo
when built for ppc64 (BE).  There are 32 unexpected failures in the gcc go
testsuite with the patch 32 unexpected failures in the gcc libgo testsuite.
Without this patch on trunk there are 2 failures in the go testsuites and 1
failure in the libgo testsuite.

I did some debugging on one of the regression failures:  bug113.go.  I found
that the problem occurs in the new code in the patch in
go/gofrontend/statements.cc when creating the expression tree to call
__go_set_defering_fn.  The argument that is being passed is generated through a
call to make_func_code_reference:


      Expression* arg         Expression::make_func_code_reference(function, location);
      Expression* call = Runtime::make_call(Runtime::SET_DEFERING_FN,
                                            location, 1, arg);
      Statement* s = Statement::make_statement(call, true);
      s->determine_types();
      gogo->add_statement(s);


On ppc64le, this works as expected but on ppc64(be) the code that is generated
from this is not the address of the function but the address of the .opd entry
that is used to call the function.  As a result the setting of the deferring
function is incorrect and it does not appear as if it can recover because of
the way __go_can_recover uses the deferring function's address to see if it is
in the correct range.

When I debug this using gdb:

Breakpoint 1, __go_set_defering_fn (defering_fn=0x10020150 <main.$thunk0>) at
/home/boger/gccgo.work/140922/src/libgo/runtime/go-defer.c:78
78      {
Missing separate debuginfos, use: debuginfo-install glibc-2.17-55.el7.ppc64
(gdb) info reg $r3
r3             0x10020150       268566864

>From the objdump, I see this address is in the .opd:
0000000010020150 <main.$thunk0>:
    10020150:   00 00 00 00     .long 0x0
    10020154:   10 00 1c 4c     vsro    v0,v0,v3
    10020158:   00 00 00 00     .long 0x0
    1002015c:   10 02 81 c0     .long 0x100281c0

but the code is actually here, which is the address that should be passed to
__go_set_defering_fn:
0000000010001c4c <.main.$thunk0>:
main.$thunk0():
    10001c4c:   7c 08 02 a6     mflr    r0
    10001c50:   f8 01 00 10     std     r0,16(r1)
    10001c54:   fb e1 ff f8     std     r31,-8(r1)
    10001c58:   f8 21 ff 71     stdu    r1,-144(r1)

Note that the actual function code address is in the first 8 bytes of the .opd
entry for the function.


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

* [Bug debug/63342] [5 Regression] ICE in loc_list_from_tree, at dwarf2out.c:14698
  2014-09-23 12:52 [Bug debug/63342] New: [5 Regression] ICE in loc_list_from_tree, at dwarf2out.c:14698 jtaylor.debian at googlemail dot com
@ 2014-09-29 15:21 ` jakub at gcc dot gnu.org
  2014-10-01 20:52 ` jakub at gcc dot gnu.org
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-09-29 15:21 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 33612
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33612&action=edit
gcc5-pr63342.patch

Untested fix.  When because of r214899 mem_loc_descriptor (correctly) gives up
(previously we were generating wrong debug info), we retry by trying to
generate debug info from the MEM_EXPR of the MEM, but in this case it contains
a TARGET_MEM_REF which we weren't handling at all.

Perhaps we should just return NULL for TARGET_MEM_REF though, because we can't
do anything for SSA_NAMEs anyway, and I doubt there could be a TARGET_MEM_REF
in MEM_EXPR which would not mention SSA_NAMEs.

The ultimate reason for not generating debug info is that the TLSLD model base
address is precomputed into some register (as it is used multiple times in the
function) and ix86_delegitimize_tls_address can't know which hard register
holds the base address, so the delegitimization fails.  In theory we probably
could emit the symbol@DTPOFF into assembly, but as we right now reject all
UNSPECs that weren't successfully delegitimized, we reject it anyway.


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

* [Bug debug/63342] [5 Regression] ICE in loc_list_from_tree, at dwarf2out.c:14698
  2014-09-23 12:52 [Bug debug/63342] New: [5 Regression] ICE in loc_list_from_tree, at dwarf2out.c:14698 jtaylor.debian at googlemail dot com
  2014-09-29 15:21 ` [Bug debug/63342] " jakub at gcc dot gnu.org
@ 2014-10-01 20:52 ` jakub at gcc dot gnu.org
  2014-10-01 20:58 ` jakub at gcc dot gnu.org
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-10-01 20:52 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: jakub
Date: Wed Oct  1 20:51:34 2014
New Revision: 215782

URL: https://gcc.gnu.org/viewcvs?rev=215782&root=gcc&view=rev
Log:
    PR debug/63342
    * dwarf2out.c (loc_list_from_tree): Handle MEM_REF with non-zero
    offset, TARGET_MEM_REF and SSA_NAME.

    * gcc.dg/pr63342.c: New test.

Added:
    trunk/gcc/testsuite/gcc.dg/pr63342.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/dwarf2out.c
    trunk/gcc/testsuite/ChangeLog


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

* [Bug debug/63342] [5 Regression] ICE in loc_list_from_tree, at dwarf2out.c:14698
  2014-09-23 12:52 [Bug debug/63342] New: [5 Regression] ICE in loc_list_from_tree, at dwarf2out.c:14698 jtaylor.debian at googlemail dot com
  2014-09-29 15:21 ` [Bug debug/63342] " jakub at gcc dot gnu.org
  2014-10-01 20:52 ` jakub at gcc dot gnu.org
@ 2014-10-01 20:58 ` jakub at gcc dot gnu.org
  2014-10-01 21:02 ` jakub at gcc dot gnu.org
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-10-01 20:58 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: jakub
Date: Wed Oct  1 20:57:44 2014
New Revision: 215783

URL: https://gcc.gnu.org/viewcvs?rev=215783&root=gcc&view=rev
Log:
    PR debug/63342
    * dwarf2out.c (loc_list_from_tree): Handle TARGET_MEM_REF and
    SSA_NAME.

    * gcc.dg/pr63342.c: New test.

Added:
    branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/pr63342.c
Modified:
    branches/gcc-4_9-branch/gcc/ChangeLog
    branches/gcc-4_9-branch/gcc/dwarf2out.c
    branches/gcc-4_9-branch/gcc/testsuite/ChangeLog


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

* [Bug debug/63342] [5 Regression] ICE in loc_list_from_tree, at dwarf2out.c:14698
  2014-09-23 12:52 [Bug debug/63342] New: [5 Regression] ICE in loc_list_from_tree, at dwarf2out.c:14698 jtaylor.debian at googlemail dot com
                   ` (2 preceding siblings ...)
  2014-10-01 20:58 ` jakub at gcc dot gnu.org
@ 2014-10-01 21:02 ` jakub at gcc dot gnu.org
  2014-10-02  6:06 ` jakub at gcc dot gnu.org
  2014-10-02 15:38 ` jtaylor.debian at googlemail dot com
  5 siblings, 0 replies; 7+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-10-01 21:02 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: jakub
Date: Wed Oct  1 21:01:39 2014
New Revision: 215784

URL: https://gcc.gnu.org/viewcvs?rev=215784&root=gcc&view=rev
Log:
    PR debug/63342
    * dwarf2out.c (loc_list_from_tree): Handle TARGET_MEM_REF and
    SSA_NAME.

    * gcc.dg/pr63342.c: New test.

Added:
    branches/gcc-4_8-branch/gcc/testsuite/gcc.dg/pr63342.c
Modified:
    branches/gcc-4_8-branch/gcc/ChangeLog
    branches/gcc-4_8-branch/gcc/dwarf2out.c
    branches/gcc-4_8-branch/gcc/testsuite/ChangeLog


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

* [Bug debug/63342] [5 Regression] ICE in loc_list_from_tree, at dwarf2out.c:14698
  2014-09-23 12:52 [Bug debug/63342] New: [5 Regression] ICE in loc_list_from_tree, at dwarf2out.c:14698 jtaylor.debian at googlemail dot com
                   ` (3 preceding siblings ...)
  2014-10-01 21:02 ` jakub at gcc dot gnu.org
@ 2014-10-02  6:06 ` jakub at gcc dot gnu.org
  2014-10-02 15:38 ` jtaylor.debian at googlemail dot com
  5 siblings, 0 replies; 7+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-10-02  6:06 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

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

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Should be fixed now.


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

* [Bug debug/63342] [5 Regression] ICE in loc_list_from_tree, at dwarf2out.c:14698
  2014-09-23 12:52 [Bug debug/63342] New: [5 Regression] ICE in loc_list_from_tree, at dwarf2out.c:14698 jtaylor.debian at googlemail dot com
                   ` (4 preceding siblings ...)
  2014-10-02  6:06 ` jakub at gcc dot gnu.org
@ 2014-10-02 15:38 ` jtaylor.debian at googlemail dot com
  5 siblings, 0 replies; 7+ messages in thread
From: jtaylor.debian at googlemail dot com @ 2014-10-02 15:38 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #6 from Julian Taylor <jtaylor.debian at googlemail dot com> ---
thanks, head (and branches) work fine now


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

end of thread, other threads:[~2014-10-02 15:38 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-23 12:52 [Bug debug/63342] New: [5 Regression] ICE in loc_list_from_tree, at dwarf2out.c:14698 jtaylor.debian at googlemail dot com
2014-09-29 15:21 ` [Bug debug/63342] " jakub at gcc dot gnu.org
2014-10-01 20:52 ` jakub at gcc dot gnu.org
2014-10-01 20:58 ` jakub at gcc dot gnu.org
2014-10-01 21:02 ` jakub at gcc dot gnu.org
2014-10-02  6:06 ` jakub at gcc dot gnu.org
2014-10-02 15:38 ` jtaylor.debian at googlemail 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).