From patchwork Mon Jul 25 03:39:13 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 106606 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 9303CB6F7E for ; Mon, 25 Jul 2011 13:39:40 +1000 (EST) Received: (qmail 3977 invoked by alias); 25 Jul 2011 03:39:39 -0000 Received: (qmail 3969 invoked by uid 22791); 25 Jul 2011 03:39:38 -0000 X-SWARE-Spam-Status: No, hits=-6.9 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, SPF_HELO_PASS X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 25 Jul 2011 03:39:14 +0000 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p6P3dD2W001125 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Sun, 24 Jul 2011 23:39:14 -0400 Received: from pebble.twiddle.home (vpn-226-63.phx2.redhat.com [10.3.226.63]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p6P3dDE3009285 for ; Sun, 24 Jul 2011 23:39:13 -0400 Message-ID: <4E2CE561.2090103@redhat.com> Date: Sun, 24 Jul 2011 20:39:13 -0700 From: Richard Henderson User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.18) Gecko/20110621 Fedora/3.1.11-1.fc14 Thunderbird/3.1.11 MIME-Version: 1.0 To: GCC Patches Subject: Fix debug/49831 X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org The ARM failure was due to constant pools being considered unreachable code. Ideally, we'd do something to mark these constant pools as data, not code, but again that's something for another day. A full arm-eabi test run is still underway, but at least the libgcc build failure is fixed. r~ PR debug/49831 * dwarf2cfi.c (connect_traces): Allow unvisited traces. Skip them entirely. diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c index de19d06..57fe566 100644 --- a/gcc/dwarf2cfi.c +++ b/gcc/dwarf2cfi.c @@ -2641,14 +2641,22 @@ connect_traces (void) prev_ti = VEC_index (dw_trace_info, trace_info, 0); - for (i = 1; i < n; ++i, prev_ti = ti) + for (i = 1; i < n; ++i) { dw_cfi_row *old_row; ti = VEC_index (dw_trace_info, trace_info, i); - /* We must have both queued and processed every trace. */ - gcc_assert (ti->beg_row && ti->end_row); + /* ??? Ideally, we should have both queued and processed. However + the current representation of constant pools on various targets + is indistinguishable from unreachable code. Assume for the + moment that we can simply skip over such traces. */ + /* ??? Consider creating a DATA_INSN rtx code to indicate that + these are not "real" instructions, and should not be considered. + This could be generically useful for tablejump data as well. */ + if (ti->beg_row == NULL) + continue; + gcc_assert (ti->end_row != NULL); /* In dwarf2out_switch_text_section, we'll begin a new FDE for the portion of the function in the alternate text @@ -2677,6 +2685,8 @@ connect_traces (void) } while (note != add_cfi_insn); } + + prev_ti = ti; } }