From patchwork Mon Nov 21 21:51:34 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Miller X-Patchwork-Id: 126949 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 E24FFB7199 for ; Tue, 22 Nov 2011 08:52:14 +1100 (EST) Received: (qmail 12529 invoked by alias); 21 Nov 2011 21:52:11 -0000 Received: (qmail 12507 invoked by uid 22791); 21 Nov 2011 21:52:10 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from shards.monkeyblade.net (HELO shards.monkeyblade.net) (198.137.202.13) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 21 Nov 2011 21:51:37 +0000 Received: from localhost (nat-pool-rdu.redhat.com [66.187.233.202]) (authenticated bits=0) by shards.monkeyblade.net (8.14.4/8.14.4) with ESMTP id pALLpYRm008383 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 21 Nov 2011 13:51:35 -0800 Date: Mon, 21 Nov 2011 16:51:34 -0500 (EST) Message-Id: <20111121.165134.269509835993417731.davem@davemloft.net> To: gcc-patches@gcc.gnu.org Subject: [PATCH] Revert regression causing changes to store_bit_field_1. From: David Miller Mime-Version: 1.0 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 As discussed on gcc. Committed to trunk. gcc/ Revert 2011-11-16 Andreas Krebbel PR middle-end/50325 * expmed.c (store_bit_field_1): Use extract_bit_field on big endian targets if the source cannot be exactly covered by word mode chunks. --- gcc/ChangeLog | 10 ++++++++++ gcc/expmed.c | 15 +++------------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index aea8611..854b00e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2011-11-21 David S. Miller + + Revert + 2011-11-16 Andreas Krebbel + + PR middle-end/50325 + * expmed.c (store_bit_field_1): Use extract_bit_field on big + endian targets if the source cannot be exactly covered by word + mode chunks. + 2011-11-21 Jakub Jelinek PR debug/50827 diff --git a/gcc/expmed.c b/gcc/expmed.c index ea42e9c..b3e6d6d 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -557,18 +557,9 @@ store_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, 0) : (int) i * BITS_PER_WORD); rtx value_word = operand_subword_force (value, wordnum, fieldmode); - unsigned HOST_WIDE_INT new_bitsize = - MIN (BITS_PER_WORD, bitsize - i * BITS_PER_WORD); - - /* If the remaining chunk doesn't have full wordsize we have - to make sure that for big endian machines the higher order - bits are used. */ - if (new_bitsize < BITS_PER_WORD && BYTES_BIG_ENDIAN) - value_word = extract_bit_field (value_word, new_bitsize, 0, - true, false, NULL_RTX, - BLKmode, word_mode); - - if (!store_bit_field_1 (op0, new_bitsize, + + if (!store_bit_field_1 (op0, MIN (BITS_PER_WORD, + bitsize - i * BITS_PER_WORD), bitnum + bit_offset, bitregion_start, bitregion_end, word_mode,