From patchwork Wed Sep 26 08:58:15 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chung-Lin Tang X-Patchwork-Id: 187015 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 EA6042C008F for ; Wed, 26 Sep 2012 18:58:53 +1000 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1349254734; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:Message-ID:Date:From:User-Agent:MIME-Version:To:CC: Subject:Content-Type:Mailing-List:Precedence:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:Sender: Delivered-To; bh=KO7VXV8zNLqs0EJw0mxnH931P0Q=; b=BGaGoXWIELUY+AB qxS9M0aTxSShiWRNdVXvvDyGLd+ZPvIptN4nyyZDPVXH4gsCu/9wuDfLsZRf1oPf TuDrqUOwMUl43zk8ASvYG2dWFQAG/oqF456drwerqo1NAkNP31sNkn1BWrDN4B5v cgiZVBzYDSdj7Kp2FUq9HbNkQVko= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Received:Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject:Content-Type:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=xD2SVWJ6iuykw8SRfkUUPQZJZgRl0hTBYmrd4XpRqJNvhQZkc5hExs9kNRKhdD FJWEieI6KA5AAxLIAwJVQtiMWVydmX+emwfBGgkfaAtgswkGqtxOUltOl+WdBDUo 8ZnHdK4b6wu4eTwwbjK1JQozBJ4O5ei9bOi37QUUAi8LA=; Received: (qmail 8181 invoked by alias); 26 Sep 2012 08:58:47 -0000 Received: (qmail 8171 invoked by uid 22791); 26 Sep 2012 08:58:46 -0000 X-SWARE-Spam-Status: No, hits=-3.6 required=5.0 tests=AWL, BAYES_00, KHOP_RCVD_UNTRUST, RCVD_IN_HOSTKARMA_W, RCVD_IN_HOSTKARMA_WL X-Spam-Check-By: sourceware.org Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 26 Sep 2012 08:58:30 +0000 Received: from svr-orw-exc-10.mgc.mentorg.com ([147.34.98.58]) by relay1.mentorg.com with esmtp id 1TGnRt-0000at-EE from ChungLin_Tang@mentor.com ; Wed, 26 Sep 2012 01:58:29 -0700 Received: from SVR-ORW-FEM-05.mgc.mentorg.com ([147.34.97.43]) by SVR-ORW-EXC-10.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.4675); Wed, 26 Sep 2012 01:58:29 -0700 Received: from [0.0.0.0] (147.34.91.1) by svr-orw-fem-05.mgc.mentorg.com (147.34.97.43) with Microsoft SMTP Server id 14.1.289.1; Wed, 26 Sep 2012 01:58:28 -0700 Message-ID: <5062C3A7.7010008@codesourcery.com> Date: Wed, 26 Sep 2012 16:58:15 +0800 From: Chung-Lin Tang User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120907 Thunderbird/15.0.1 MIME-Version: 1.0 To: gcc-patches CC: Richard Earnshaw , Ramana Radhakrishnan Subject: [PATCH, ARM] Fix PR44557 (Thumb-1 ICE) 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 There was a patch of mine here from over an year ago: http://gcc.gnu.org/ml/gcc-patches/2011-01/msg01846.html That old patch contained a constraint modification that was a point of discussion at the time, but upon re-testing I found it was unneeded for fixing the PR (don't remember why I included it) Resubmitting the patch adapted, basically a single-liner adding CORE_REGS to the preferred reload class under Thumb-1. Cross-tested with no regressions under "-march=armv5te -mthumb". Okay for trunk? Thanks, Chung-Lin 2012-09-26 Chung-Lin Tang PR target/44557 * config/arm/arm.c (arm_preferred_reload_class): Add CORE_REGS to Thumb-1 case. testsuite/ PR target/44557 * gcc.target/arm/pr44557.c: New test. Index: config/arm/arm.c =================================================================== --- config/arm/arm.c (revision 191753) +++ config/arm/arm.c (working copy) @@ -6254,6 +6254,7 @@ arm_preferred_reload_class (rtx x ATTRIBUTE_UNUSED else { if (rclass == GENERAL_REGS + || rclass == CORE_REGS || rclass == HI_REGS || rclass == NO_REGS || rclass == STACK_REG) Index: testsuite/gcc.target/arm/pr44557.c =================================================================== --- testsuite/gcc.target/arm/pr44557.c (revision 0) +++ testsuite/gcc.target/arm/pr44557.c (revision 0) @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-mthumb -O1 -march=armv5te -fno-omit-frame-pointer -fno-forward-propagate" } */ +/* { dg-require-effective-target arm_thumb1_ok } */ + +struct S +{ + short x, y; +}; + +void foo (struct S *p, struct S *q, char *t, int n) +{ + struct S *c, d; + int x = 1; + + while (n--) + { + if (*t && p) + c = p; + q->x = d.x + c->x + c->y; + if (x) + { + x = 0; + d.x += c->x; + } + } +}