From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 640 invoked by alias); 25 Apr 2012 17:06:57 -0000 Received: (qmail 630 invoked by uid 22791); 25 Apr 2012 17:06:57 -0000 X-SWARE-Spam-Status: No, hits=-4.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00,KHOP_THREADED X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 25 Apr 2012 17:06:44 +0000 From: "hubicka at ucw dot cz" To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/53093] [4.8 Regression]: tls/alias-1.c ICE, emutls Date: Wed, 25 Apr 2012 17:06:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: middle-end X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: hubicka at ucw dot cz X-Bugzilla-Status: ASSIGNED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned 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-04/txt/msg02282.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53093 --- Comment #2 from Jan Hubicka 2012-04-25 17:06:41 UTC --- Hi, the problem seems to be quite easy. We have variable and alias. The code first counts number of variables and allocated vectors, then it inserts aliases, too, and the length of vector is not enough anymore. Can you, please, test the following patch? I will try to work out why this did not ICE before. Honza Index: tree-emutls.c =================================================================== --- tree-emutls.c (revision 186831) +++ tree-emutls.c (working copy) @@ -706,7 +706,7 @@ create_emultls_var (struct varpool_node cdecl = new_emutls_decl (var->symbol.decl, var->alias_of); cvar = varpool_get_node (cdecl); - VEC_quick_push (varpool_node_ptr, control_vars, cvar); + VEC_safe_push (varpool_node_ptr, heap, control_vars, cvar); if (!var->alias) {