From patchwork Fri Oct 19 06:46:38 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhenqiang Chen X-Patchwork-Id: 192577 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 54F0B2C0080 for ; Fri, 19 Oct 2012 17:46:55 +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=1351234016; h=Comment: DomainKey-Signature:Received:Received:Received:Received: MIME-Version:Received:Received:Date:Message-ID:Subject:From:To: Content-Type:Mailing-List:Precedence:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:Sender:Delivered-To; bh=diHV5lL y60/a64bWqrDG80VyAVE=; b=ne6oyW7EVZE9zwy2y/bAutYcZpWg37/xrOaQnhE UnMpcDu409EKmfZL5M8IMlq95uCvIBCuUW1Pq2qjd2w+Ye0W2SMJ16cRzUh6WKbA wrkagZmvVWuMNbH3SI1V7jzWtzjx6BN9v6EDO2LjwzUbE/AD4wFV5FASOcae1ZeD 4fNE= 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:X-Google-DKIM-Signature:MIME-Version:Received:Received:Date:Message-ID:Subject:From:To:Content-Type:X-Gm-Message-State:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=lFcEQP0BoZtjgjGEkPtxgzceMRSw0iO6y1CgCHh5ArfoURSFlG1N/hC7lJ+yai XVbl9yMwIDhmdhs2+mUY+pLqg9oMGQEjtERCu7zqF/24nh+X5pGsAmHhFt/ghizG vkOj3KMqfXN/D1/OYtnTjx1BQW48sSZ34goToVw+vf00I=; Received: (qmail 28033 invoked by alias); 19 Oct 2012 06:46:47 -0000 Received: (qmail 28021 invoked by uid 22791); 19 Oct 2012 06:46:46 -0000 X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL, BAYES_00, KHOP_RCVD_UNTRUST, RCVD_IN_DNSWL_LOW, RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org Received: from mail-ia0-f175.google.com (HELO mail-ia0-f175.google.com) (209.85.210.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 19 Oct 2012 06:46:39 +0000 Received: by mail-ia0-f175.google.com with SMTP id b35so97666iac.20 for ; Thu, 18 Oct 2012 23:46:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type :x-gm-message-state; bh=J+PK9uVKlaTtXw+qcp7/XONj0kWKL9PlJNgs8wz+th8=; b=khE7MmnQHFn2FRpT+o4WF+OtSHmrqbBbzu5XHMKQSusw9f2rrGP6hwBKiMHkEmUUkD TO5oBLBXrysKXxdEDqNLdJnsnIJ/lLwRvLavwzd8UTCASg0m0pdgU6Qf+cuhuUtiXsuE RbIp6WyBiHk72Wp8Dp5GcTvPJbnfH7ZFaEB3nXBv/VJmfnadWj6/j9ltFy35Mm0oEcuW eeiZMKbwaP1yvTxeNgQT6lknCReOkfe3UqE/lnoZ63n8frqf5fwd0sLwCVijTgMeE7Yj bpKn1PuxcK1qWi1TWfG1D5GJvs6UTg4B4tT/cBjlHjgLrvhHdhwyFoXFGyVfETcqYQHT uaKQ== MIME-Version: 1.0 Received: by 10.50.190.162 with SMTP id gr2mr7348784igc.65.1350629198497; Thu, 18 Oct 2012 23:46:38 -0700 (PDT) Received: by 10.231.77.98 with HTTP; Thu, 18 Oct 2012 23:46:38 -0700 (PDT) Date: Fri, 19 Oct 2012 14:46:38 +0800 Message-ID: Subject: [PATCH, ARM] Fix PR target/54892 - [4.7/4.8 Regression], ICE in extract_insn, at recog.c:2123 From: Zhenqiang Chen To: gcc-patches@gcc.gnu.org X-Gm-Message-State: ALoCoQln+e1X1t5u8WNYux/KIEhPkVEjE5NOHjUhpQ8Sp9D7E+BcJDw2a0MRqqKZkCGgFgII3SPa 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, In function arm_expand_compare_and_swap, oldval is converted to SImode when its "mode" is QImode/HImode. After "FALLTHRU" to "case SImode", we should use "SImode", other than "mode" (which is QImode/HImode). And INSN atomic_compare_and_swap_1 expects the operand in SImode. No make check regression. Is it OK for 4.7 and trunk? Thanks! -Zhenqiang ChangeLog: 2012-10-19 Zhenqiang Chen PR target/54892 * config/arm/arm.c (arm_expand_compare_and_swap): Use SImode to make sure the mode is correct when falling through from above cases. testsuite/ChangeLog: 2012-10-19 Zhenqiang Chen PR target/54892 * gcc.target/arm/pr54892.c: New. diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index fc3a508..265e1cb 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -25437,8 +25437,8 @@ arm_expand_compare_and_swap (rtx operands[]) case SImode: /* Force the value into a register if needed. We waited until after the zero-extension above to do this properly. */ - if (!arm_add_operand (oldval, mode)) - oldval = force_reg (mode, oldval); + if (!arm_add_operand (oldval, SImode)) + oldval = force_reg (SImode, oldval); break; case DImode: