From patchwork Mon Jan 14 08:27:37 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 211799 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 797F02C0096 for ; Tue, 15 Jan 2013 01:45:23 +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=1358779523; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:Received:Received:Message-ID:Date:From:User-Agent: MIME-Version:To:CC:Subject:References:In-Reply-To:Content-Type: Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:Sender:Delivered-To; bh=nEyf41K9e7fgH/D0zlHh ktij8K8=; b=OyWS5R98yRlqJf4I/U7v0zhP79wu7WUhywXQ8jwcGkV++gIB3+4f KbJyZr5jhEvZaryA6EPJPOkxrcraQU3FaXno4N0yEyfoqzaYHKzd8dtcxzweZDCK 6cknN91QuABYN5Mmf72SogY1iBEHjh3eImIcBo8MQWwzAMCoBnR6VtM= 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:Received:Received:Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject:References:In-Reply-To:Content-Type:X-detected-operating-system:X-Received-From:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=vNOv/934Jz4BVTuQ5fgtQrou3MueP0UJAjsXCAXZFsRM+mW6Dk9CyDuR4RXj7M dje3yeR/HgQGgjY4R+7VK1ESldpF5QLB698mFfpU8bEhUsXjok+A3Dic5vE2L6eL iBJShRgEdaPb9mfzmaHTXxbEolXKE0kTUnqEU1ndBv448=; Received: (qmail 2653 invoked by alias); 14 Jan 2013 14:44:47 -0000 Received: (qmail 2554 invoked by uid 22791); 14 Jan 2013 14:44:45 -0000 X-SWARE-Spam-Status: No, hits=-4.9 required=5.0 tests=AWL, BAYES_00, KHOP_RCVD_UNTRUST, KHOP_THREADED, RCVD_IN_DNSWL_HI, RCVD_IN_HOSTKARMA_W X-Spam-Check-By: sourceware.org Received: from eggs.gnu.org (HELO eggs.gnu.org) (208.118.235.92) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 14 Jan 2013 14:44:39 +0000 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TufOW-0006ej-JK for gcc-patches@gcc.gnu.org; Mon, 14 Jan 2013 03:27:51 -0500 Received: from relay1.mentorg.com ([192.94.38.131]:61161) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TufOW-0006ed-Db for gcc-patches@gcc.gnu.org; Mon, 14 Jan 2013 03:27:48 -0500 Received: from svr-orw-fem-01.mgc.mentorg.com ([147.34.98.93]) by relay1.mentorg.com with esmtp id 1TufOS-0003Ob-PO from Tom_deVries@mentor.com ; Mon, 14 Jan 2013 00:27:44 -0800 Received: from SVR-IES-FEM-02.mgc.mentorg.com ([137.202.0.106]) by svr-orw-fem-01.mgc.mentorg.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Mon, 14 Jan 2013 00:27:44 -0800 Received: from [127.0.0.1] (137.202.0.76) by SVR-IES-FEM-02.mgc.mentorg.com (137.202.0.106) with Microsoft SMTP Server id 14.1.289.1; Mon, 14 Jan 2013 08:27:42 +0000 Message-ID: <50F3C179.1030705@mentor.com> Date: Mon, 14 Jan 2013 09:27:37 +0100 From: Tom de Vries User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130106 Thunderbird/17.0.2 MIME-Version: 1.0 To: Richard Henderson CC: Steve Ellcey , Andrew Pinski , "gcc-patches@gcc.gnu.org" Subject: Re: [PATCH] Fix PR55876 - Make generation of paradoxical subreg in widen_operand more robust References: <50EA9FDD.6000803@mentor.com> <50EAA074.3050402@mentor.com> <50EB0A5D.1000302@redhat.com> In-Reply-To: <50EB0A5D.1000302@redhat.com> X-detected-operating-system: by eggs.gnu.org: Windows NT kernel [generic] [fuzzy] X-Received-From: 192.94.38.131 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 On 07/01/13 18:48, Richard Henderson wrote: > On 01/07/2013 02:16 AM, Tom de Vries wrote: >> - /* If MODE is no wider than a single word, we return a paradoxical >> - SUBREG. */ >> + /* If MODE is no wider than a single word, we return a >> + lowpart or paradoxical SUBREG. */ >> if (GET_MODE_SIZE (mode) <= UNITS_PER_WORD) >> - return gen_rtx_SUBREG (mode, force_reg (GET_MODE (op), op), 0); >> + { >> + if (GET_MODE_SIZE (mode) < GET_MODE_SIZE (GET_MODE (op))) >> + return gen_lowpart_SUBREG (mode, op); >> + else >> + return gen_rtx_SUBREG (mode, force_reg (GET_MODE (op), op), 0); >> + } > > Is there any good reason we're using gen_rtx_SUBREG directly here? > Seems like this sort of logic would be present in plain gen_lowpart, > generating the paradoxical subreg that we want. > Ah, didn't realize that. Attached patch uses gen_lowpart. Bootstrapped and reg-tested on x86_64. Build and reg-tested on mips64, -mabi=n32 and -mabi=64. OK for trunk? Thanks, - Tom 2013-01-14 Tom de Vries PR target/55876 * optabs.c (widen_operand): Use gen_lowpart instead of gen_rtx_SUBREG. Update comment. Index: gcc/optabs.c =================================================================== --- gcc/optabs.c (revision 194898) +++ gcc/optabs.c (working copy) @@ -327,10 +327,10 @@ widen_operand (rtx op, enum machine_mode && SUBREG_PROMOTED_UNSIGNED_P (op) == unsignedp)) return convert_modes (mode, oldmode, op, unsignedp); - /* If MODE is no wider than a single word, we return a paradoxical + /* If MODE is no wider than a single word, we return a lowpart or paradoxical SUBREG. */ if (GET_MODE_SIZE (mode) <= UNITS_PER_WORD) - return gen_rtx_SUBREG (mode, force_reg (GET_MODE (op), op), 0); + return gen_lowpart (mode, force_reg (GET_MODE (op), op)); /* Otherwise, get an object of MODE, clobber it, and set the low-order part to OP. */