From patchwork Tue Dec 11 14:06:18 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kyrylo Tkachov X-Patchwork-Id: 205232 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 615C82C0080 for ; Wed, 12 Dec 2012 01:07:00 +1100 (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=1355839620; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type: Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:Sender:Delivered-To; bh=1bNBjbHblcRQTdqUb88V 5daSULk=; b=iKsO7ou5+uLnlwIHWUAxCDjpIBFeygWAVZkwktfCbOXgpLpUkdF7 F3Prq0PEEkk8W2bF6NXggrs8++vtTAcRW4A/hjuN6FV4AWVYGZgL2vIfpd1CjenM lKhmxWj+xBRwiwBtAsyazKf65sPjeRIJqaWR50Ik27xD4J8z9N1642M= 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:From:To:Cc:Subject:Date:Message-ID:MIME-Version:X-MC-Unique:Content-Type:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=sMvKevx0E46per2FpNMJ8ytIlsrwXZ/AGQiK7mK+0ghUXaKFNvnDg8VRorjM8q t5RwzqPUtfSpp1jTGu7jbfHIxczM43zrv55C7yDLs2xQOqUWyuixDg8RNVaTs/Oq d7gN9DPtypKfDKJg3EqyF1JVSO9nwdMM5FLnwDelA8aIA=; Received: (qmail 17266 invoked by alias); 11 Dec 2012 14:06:56 -0000 Received: (qmail 17258 invoked by uid 22791); 11 Dec 2012 14:06:55 -0000 X-SWARE-Spam-Status: No, hits=-1.1 required=5.0 tests=AWL, BAYES_00, KHOP_RCVD_UNTRUST, MSGID_MULTIPLE_AT, RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from service87.mimecast.com (HELO service87.mimecast.com) (91.220.42.44) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 11 Dec 2012 14:06:46 +0000 Received: from cam-owa1.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.21]) by service87.mimecast.com; Tue, 11 Dec 2012 14:06:30 +0000 Received: from e106372vm ([10.1.255.212]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.0); Tue, 11 Dec 2012 14:06:30 +0000 From: "Kyrylo Tkachov" To: Cc: "Ramana Radhakrishnan" Subject: [PATCH][ARM] ce_count attribute for thumb2 abssi2 patterns Date: Tue, 11 Dec 2012 14:06:18 -0000 Message-ID: <006201cdd7a8$b1426b10$13c74130$@tkachov@arm.com> MIME-Version: 1.0 X-MC-Unique: 112121114063011601 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 Hi all, This patch fixes http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55642 It sets the ce_count attribute for the abssi2 patterns in thumb2.md. If we don't set it, gcc assumes that the pattern generates only one conditional instruction and produces the wrong enclosing IT instruction. The two affected patterns each produce two conditional instructions. A new testcase is added. No regressions on arm-none-eabi with qemu. Ok for trunk? Thanks, Kyrill gcc/ChangeLog 2012-12-11 Kyrylo Tkachov PR target/55642 * config/arm/thumb2.md (*thumb2_abssi2): Set ce_count attribute to 2. (*thumb2_neg_abssi2): Likewise. gcc/testsuite/ChangeLog 2012-12-11 Kyrylo Tkachov * gcc.target/arm/pr55642.c: New testcase. diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md index de573ca..f22666c 100644 --- a/gcc/config/arm/thumb2.md +++ b/gcc/config/arm/thumb2.md @@ -142,6 +142,7 @@ [(set_attr "conds" "clob,*") (set_attr "shift" "1") (set_attr "predicable" "no, yes") + (set_attr "ce_count" "2") (set_attr "length" "10,8")] ) @@ -156,6 +157,7 @@ [(set_attr "conds" "clob,*") (set_attr "shift" "1") (set_attr "predicable" "no, yes") + (set_attr "ce_count" "2") (set_attr "length" "10,8")] ) diff --git a/gcc/testsuite/gcc.target/arm/pr55642.c b/gcc/testsuite/gcc.target/arm/pr55642.c new file mode 100644 index 0000000..10f2daa --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/pr55642.c @@ -0,0 +1,15 @@ +/* { dg-options "-mthumb -O2" } */ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_thumb2_ok } */ + +int +foo (int v) +{ + register int i asm ("r0"); + register int j asm ("r1"); + if (v > 1) + i = abs (j); + + return i; +} +