From patchwork Wed May 22 10:31:42 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Bruel X-Patchwork-Id: 245580 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]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "localhost", Issuer "www.qmailtoaster.com" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 710A22C00A1 for ; Wed, 22 May 2013 20:31:54 +1000 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:subject:content-type; q= dns; s=default; b=nqQIGErIbKI23IwTy5EbUMe95QnbKT+lN1ImmkdIMJtU0U Pt5raCFMozLnlwn4nmreJpY/bBuuTLPt07LYINL+C3x7XBylYYzYthCwdMfVZDd3 u18hDKF7qLYVPNuviIpQ6x2EF16Jfkb0GfsRHsQGMC8y0LPWztDCxXaaFpByY= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:subject:content-type; s= default; bh=R204hD2gwxpOCGJoNzJ5U18ktuw=; b=VxXA3XONgk6VQJDPBfBn 55mN5lmXyNUO2nV7VfVFppXc617slPN82PjwvLKxUX4mIUhbwol0ar5Sp97rrrbw zHCEWtBYwWV3vocqzUnh5lvG8+SHyUjoKfgr0aBKf+zeMKADHFX4m1hlOb4ux88H qBZ4N1eu9+4B0+BZntw7qXc= Received: (qmail 30346 invoked by alias); 22 May 2013 10:31:48 -0000 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 Received: (qmail 30334 invoked by uid 89); 22 May 2013 10:31:47 -0000 X-Spam-SWARE-Status: No, score=-2.5 required=5.0 tests=AWL, BAYES_00, KHOP_RCVD_UNTRUST, RCVD_IN_DNSWL_MED, RCVD_IN_HOSTKARMA_W, TW_DB, TW_FP, TW_VF autolearn=ham version=3.3.1 Received: from eu1sys200aog118.obsmtp.com (HELO eu1sys200aog118.obsmtp.com) (207.126.144.145) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Wed, 22 May 2013 10:31:46 +0000 Received: from beta.dmz-eu.st.com ([164.129.1.35]) (using TLSv1) by eu1sys200aob118.postini.com ([207.126.147.11]) with SMTP ID DSNKUZyej1qnQPrcQVRZPJ5I+dV82u2Uqgtu@postini.com; Wed, 22 May 2013 10:31:46 UTC Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 6EFF719A for ; Wed, 22 May 2013 10:31:43 +0000 (GMT) Received: from Webmail-eu.st.com (safex1hubcas3.st.com [10.75.90.18]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 6297D478B for ; Wed, 22 May 2013 10:31:28 +0000 (GMT) Received: from [164.129.122.89] (164.129.122.89) by webmail-eu.st.com (10.75.90.13) with Microsoft SMTP Server (TLS) id 8.3.279.5; Wed, 22 May 2013 12:31:42 +0200 Message-ID: <519C9E8E.1090607@st.com> Date: Wed, 22 May 2013 12:31:42 +0200 From: Christian Bruel User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:14.0) Gecko/20120713 Thunderbird/14.0 MIME-Version: 1.0 To: "gcc-patches@gcc.gnu.org" Subject: [ARM] fix PR debug/57351 ICE: internal compiler error: in dbx_reg_number, X-Virus-Found: No Hello, arm_dwarf_register_span converts regno to a dbx register number while building the PARALLEL rtx. But since http://gcc.gnu.org/ml/gcc-patches/2013-05/msg01131.html this information is centralized in DBX_REGISTER_NUMBER that will be called when processing the operands in reg_loc_descriptor, so the DBX conversion information doesn't need to be duplicated. Build and regtested with a arm-none-eabi newlib toolset configured with --with-fpu=neon-vfpv4 --with-float=hard --with-arch=armv7-a OK for trunk ? Thanks Christian 2013-05-22 Christian Bruel PR debug/57351 * config/arm/arm.c (arm_dwarf_register_span): Do not use dbx number. 2013-05-22 Christian Bruel PR debug/57351 * gcc.dg/debug/pr57351.c: New test Index: gcc/config/arm/arm.c =================================================================== --- gcc/config/arm/arm.c (revision 199179) +++ gcc/config/arm/arm.c (working copy) @@ -25861,9 +25861,8 @@ arm_dwarf_register_span (rtx rtl) nregs = GET_MODE_SIZE (GET_MODE (rtl)) / 8; p = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (nregs)); - regno = (regno - FIRST_VFP_REGNUM) / 2; for (i = 0; i < nregs; i++) - XVECEXP (p, 0, i) = gen_rtx_REG (DImode, 256 + regno + i); + XVECEXP (p, 0, i) = gen_rtx_REG (DImode, regno + i); return p; } Index: gcc/testsuite/gcc.dg/debug/pr57351.c =================================================================== --- gcc/testsuite/gcc.dg/debug/pr57351.c (revision 0) +++ gcc/testsuite/gcc.dg/debug/pr57351.c (revision 0) @@ -0,0 +1,53 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_neon } */ +/* { dg-options "-std=c99 -Os -g -march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard" { target { arm-*-* } } } */ + +typedef unsigned int size_t; +typedef int ptrdiff_t; +typedef signed char int8_t ; +typedef signed long long int64_t; +typedef int8_t GFC_INTEGER_1; +typedef GFC_INTEGER_1 GFC_LOGICAL_1; +typedef int64_t GFC_INTEGER_8; +typedef GFC_INTEGER_8 GFC_LOGICAL_8; +typedef ptrdiff_t index_type; +typedef struct descriptor_dimension +{ + index_type lower_bound; + index_type _ubound; +} +descriptor_dimension; +typedef struct { GFC_LOGICAL_1 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_l1; +typedef struct { GFC_LOGICAL_8 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_l8; +void +all_l8 (gfc_array_l8 * const restrict retarray, + gfc_array_l1 * const restrict array, + const index_type * const restrict pdim) +{ + GFC_LOGICAL_8 * restrict dest; + index_type n; + index_type len; + index_type delta; + index_type dim; + dim = (*pdim) - 1; + len = ((array)->dim[dim]._ubound + 1 - (array)->dim[dim].lower_bound); + for (n = 0; n < dim; n++) + { + const GFC_LOGICAL_1 * restrict src; + GFC_LOGICAL_8 result; + { + result = 1; + { + for (n = 0; n < len; n++, src += delta) + { + if (! *src) + { + result = 0; + break; + } + } + *dest = result; + } + } + } +}