From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 54371 invoked by alias); 20 Dec 2015 22:20:21 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 54357 invoked by uid 89); 20 Dec 2015 22:20:20 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.3 required=5.0 tests=AWL,BAYES_50,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 spammy=4095, lto-symtab, Entity_Id, Present X-HELO: smtp.eu.adacore.com Received: from mel.act-europe.fr (HELO smtp.eu.adacore.com) (194.98.77.210) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Sun, 20 Dec 2015 22:20:19 +0000 Received: from localhost (localhost [127.0.0.1]) by filtered-smtp.eu.adacore.com (Postfix) with ESMTP id AE9812EE0065; Sun, 20 Dec 2015 23:20:15 +0100 (CET) Received: from smtp.eu.adacore.com ([127.0.0.1]) by localhost (smtp.eu.adacore.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id e6ev9lNP81gz; Sun, 20 Dec 2015 23:20:15 +0100 (CET) Received: from polaris.localnet (bon31-6-88-161-99-133.fbx.proxad.net [88.161.99.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.eu.adacore.com (Postfix) with ESMTPSA id 7EA802EE0064; Sun, 20 Dec 2015 23:20:15 +0100 (CET) From: Eric Botcazou To: Jan Hubicka Cc: gcc-patches@gcc.gnu.org, "H.J. Lu" , Richard Biener , Arnaud Charlet Subject: Re: Fix lto-symtab ICE during Ada LTO bootstrap Date: Sun, 20 Dec 2015 22:20:00 -0000 Message-ID: <5296555.IcPf3kD4Th@polaris> User-Agent: KMail/4.14.9 (Linux/3.16.7-29-desktop; KDE/4.14.9; x86_64; ; ) In-Reply-To: <20151123183655.GB77967@kam.mff.cuni.cz> References: <20151121182122.GB23225@kam.mff.cuni.cz> <2994568.AbHtM70Sqm@polaris> <20151123183655.GB77967@kam.mff.cuni.cz> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-SW-Source: 2015-12/txt/msg01963.txt.bz2 > BTW for the LTO type merging issues one could probably just drop those types > and all derivations to alias set 0. But indeed rewriting them to pointers > would be better, especially for ABI compatibility. > > The Ada ICE I get is: > Continuing. > +===========================GNAT BUG DETECTED==============================+ > | 6.0.0 20151122 (experimental) (x86_64-pc-linux-gnu) Assert_Failure > | atree.adb:6776| Error detected at system.ads:107:4 It's apparently another bug in the DCE pass. From: : # DEBUG id => e_186 _11422 = atree__unchecked_access__node4.localalias.3007 (e_186); : # DEBUG id => NULL # DEBUG n => _11422 # DEBUG n => NULL if (_11422 == 0) goto (); else goto ; in phicprop2, we have in cddce2: Deleting : if (_11422 == 0) and then: : # DEBUG id => e_186 _11422 = atree__unchecked_access__node4.localalias.3007 (e_186); : # DEBUG id => NULL # DEBUG n => _11422 # DEBUG n => NULL # DEBUG id => e_186 goto ; which is wrong since it's the only exit of the loop in sem_prag.adb:22878: loop Set_Warnings_Off (E, (Chars (Get_Pragma_Arg (Arg1)) = Name_Off)); -- For OFF case, make entry in warnings off -- pragma table for later processing. But we do -- not do that within an instance, since these -- warnings are about what is needed in the -- template, not an instance of it. if Chars (Get_Pragma_Arg (Arg1)) = Name_Off and then Warn_On_Warnings_Off and then not In_Instance then Warnings_Off_Pragmas.Append ((N, E, Reason)); end if; if Is_Enumeration_Type (E) then declare Lit : Entity_Id; begin Lit := First_Literal (E); while Present (Lit) loop Set_Warnings_Off (Lit); Next_Literal (Lit); end loop; end; end if; exit when No (Homonym (E)); E := Homonym (E); end loop; Note that the change you installed is not exactly the patch you had posted, it contains an additional hunk: @@ -134,7 +137,7 @@ mark_stmt_necessary (gimple *stmt, bool gimple_set_plf (stmt, STMT_NECESSARY, true); if (add_to_worklist) worklist.safe_push (stmt); - if (bb_contains_live_stmts && !is_gimple_debug (stmt)) + if (add_to_worklist && bb_contains_live_stmts && !is_gimple_debug (stmt)) bitmap_set_bit (bb_contains_live_stmts, gimple_bb (stmt)->index); } which is not documented in the installed ChangeLog either. -- Eric Botcazou