From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2043 invoked by alias); 11 Oct 2012 15:00:33 -0000 Received: (qmail 1792 invoked by uid 48); 11 Oct 2012 15:00:11 -0000 From: "rguenth at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug lto/54898] [4.8 regression] ICE in uniquify_nodes, at lto/lto.c:1898 Date: Thu, 11 Oct 2012 15:00:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: lto X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: rguenth at gcc dot gnu.org X-Bugzilla-Status: ASSIGNED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: rguenth at gcc dot gnu.org X-Bugzilla-Target-Milestone: 4.8.0 X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2012-10/txt/msg01090.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54898 --- Comment #3 from Richard Biener 2012-10-11 15:00:09 UTC --- What happens is that the input at LTRANS stage has wrecked TYPE_MAIN_VARIANT: (gdb) call debug_tree ($31) constant 32> unit size constant 4> align 32 symtab 0 alias set -1 structural equality precision 32 min max > (gdb) p $31->type_common.main_variant $32 = (tree) 0x7ffff6924540 (gdb) call debug_tree ($32) constant 32> unit size constant 4> align 32 symtab 0 alias set -1 structural equality precision 32 min max context > (gdb) p $31->type_common.main_variant->type_common.main_variant $33 = (tree) 0x7ffff67f05e8 (gdb) call debug_tree ($33) constant 32> unit size constant 4> align 32 symtab 0 alias set -1 canonical type 0x7ffff67f05e8 precision 32 min max pointer_to_this > thus a TYPE_MAIN_VARIANT of a main variant is not itself. The code cannot deal with this impossible situation. Thus, TYPE_MAIN_VARIANT (t) == TYPE_MAIN_VARIANT (TYPE_MAIN_VARIANT (t)) needs to always hold. It might be that things break here because $33 is integer_type_node, a type we pre-load into the streamer cache. More investigation needed.