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.
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).
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
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
This should now be fixed.