Bug 52605 - LTO -g ICE when looking up context of VMTs of classes defined within functions
Summary: LTO -g ICE when looking up context of VMTs of classes defined within functions
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: lto (show other bugs)
Version: 4.8.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords: lto
Depends on:
Blocks: 47819
  Show dependency treegraph
 
Reported: 2012-03-16 16:06 UTC by Martin Jambor
Modified: 2012-05-03 17:01 UTC (History)
1 user (show)

See Also:
Host: x86_64-linux-gnu
Target: x86_64-linux-gnu
Build:
Known to work:
Known to fail: 4.7.0, 4.8.0
Last reconfirmed:


Attachments
Testcase (235 bytes, text/plain)
2012-03-16 16:06 UTC, Martin Jambor
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Martin Jambor 2012-03-16 16:06:37 UTC
Created attachment 26905 [details]
Testcase

When compiling the attached testcase with -flto and -g, I get the
following ICE:

lto1: internal compiler error: tree check: expected tree that contains ‘decl minimal’ structure, have ‘record_type’ in lookup_decl_die, at dwarf2out.c:5118

This is the same problem I first encountered when LTOing Firefox and
which I reported in the mailing list a while ago
(http://gcc.gnu.org/ml/gcc-patches/2012-03/msg00551.html) but this
testcase is close to minimal.

The reason why we do not hit this wrong use of decl_function_context
without LTO is that the function dwarf2out_decl is never called on
VMTs when not doing LTO.
Comment 1 Martin Jambor 2012-04-23 17:04:23 UTC
This is still the only problem that prevents me from LTO building
Firefox with -g.  Moreover, I have just verified the problem is also
present also in 4.7 (and it's also the only one).  I really think we
should fix this for 4.7.1.

My patch proposed on the mailing list still applies (to both trunk and
the branch).
Comment 2 Martin Jambor 2012-05-02 19:50:40 UTC
Author: jamborm
Date: Wed May  2 19:50:37 2012
New Revision: 187063

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=187063
Log:
2012-05-02  Martin Jambor  <mjambor@suse.cz>

	PR lto/52605
	* dwarf2out.c (dwarf2out_decl): Only lookup die representing context
	of a variable when the contect is a function.

	* gcc/testsuite/g++.dg/lto/pr52605_0.C: New test.


Added:
    trunk/gcc/testsuite/g++.dg/lto/pr52605_0.C
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/dwarf2out.c
    trunk/gcc/testsuite/ChangeLog
Comment 3 Martin Jambor 2012-05-03 17:00:48 UTC
Author: jamborm
Date: Thu May  3 17:00:32 2012
New Revision: 187109

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=187109
Log:
2012-05-03  Martin Jambor  <mjambor@suse.cz>

	PR lto/52605
	* dwarf2out.c (dwarf2out_decl): Only lookup die representing context
	of a variable when the contect is a function.

	* gcc/testsuite/g++.dg/lto/pr52605_0.C: New test.


Added:
    branches/gcc-4_7-branch/gcc/testsuite/g++.dg/lto/pr52605_0.C
Modified:
    branches/gcc-4_7-branch/gcc/ChangeLog
    branches/gcc-4_7-branch/gcc/dwarf2out.c
    branches/gcc-4_7-branch/gcc/testsuite/ChangeLog
Comment 4 Martin Jambor 2012-05-03 17:01:45 UTC
This should now be fixed.