From patchwork Thu Oct 29 15:28:05 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 537914 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]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 79FDB1402CC for ; Fri, 30 Oct 2015 02:28:22 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=n5o/ogIV; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:message-id:mime-version:content-type :content-transfer-encoding; q=dns; s=default; b=CBXRMXbuuA4GuKqc A/kCHhNIOPEN+p5dunxxCFYg9U0Ddk++uaoNsLZURmtqGUEuZKRwNQtAsrl9pS7r /eP0JDp+xY+9oWW2eF49FFjmLni1FDOkE3ytuxtFg3UBFVhjyLGmbMLl8T3s+JjI hwmQqnTuspPbBw9JfQDyijqOS/E= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:message-id:mime-version:content-type :content-transfer-encoding; s=default; bh=Xe6fMpeA8ijNjYEWwrogxL LOhaQ=; b=n5o/ogIVR/pzn7fGtXS2BQWX4GSx/8wULEtqQOL+W4xf/CEgnNIwJ5 5+XmumewP2JiofM4LAxa1vGVkAHUYByiZOdukXAtZyyRJsEMDUkt5z8sLB4dPvKi nj8OdrrKXZOz9uc4irZq4OQgry+5fGkX2UWQoAdKrz3QJg95+UbAo= Received: (qmail 128028 invoked by alias); 29 Oct 2015 15:28:12 -0000 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 Received: (qmail 128005 invoked by uid 89); 29 Oct 2015 15:28:11 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=AWL, BAYES_00, SPF_PASS autolearn=ham version=3.3.2 X-HELO: eu-smtp-delivery-143.mimecast.com Received: from eu-smtp-delivery-143.mimecast.com (HELO eu-smtp-delivery-143.mimecast.com) (207.82.80.143) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 29 Oct 2015 15:28:10 +0000 Received: from cam-owa2.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.140]) by eu-smtp-1.mimecast.com with ESMTP id uk-mta-16-YOWqyVCET521_Imu9wOqqQ-1; Thu, 29 Oct 2015 15:28:05 +0000 Received: from localhost ([10.1.2.79]) by cam-owa2.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Thu, 29 Oct 2015 15:28:05 +0000 From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, richard.sandiford@arm.com Subject: Fix real_2expN mode arguments in fixed-value.c Date: Thu, 29 Oct 2015 15:28:05 +0000 Message-ID: <87io5pu22i.fsf@e105548-lin.cambridge.arm.com> User-Agent: Gnus/5.130012 (Ma Gnus v0.12) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 X-MC-Unique: YOWqyVCET521_Imu9wOqqQ-1 fixed-value.c was passing a fixed-point mode to the floating-point real_2expN routine. That didn't cause a problem in practice because all real_2expN did was check for decimal float modes, but it triggered a failure with an upcoming patch. Tested on x86_64-linux-gnu, arm-linux-gnueabi and aarch64-linux-gnu. OK to install? Thanks, Richard gcc/ * fixed-value.c (check_real_for_fixed_mode, fixed_from_string) (fixed_to_decimal, fixed_convert_from_real) (real_convert_from_fixed): Fix mode arguments to real_2expN. diff --git a/gcc/fixed-value.c b/gcc/fixed-value.c index 39bdebe..a38045f 100644 --- a/gcc/fixed-value.c +++ b/gcc/fixed-value.c @@ -64,8 +64,8 @@ check_real_for_fixed_mode (REAL_VALUE_TYPE *real_value, machine_mode mode) { REAL_VALUE_TYPE max_value, min_value, epsilon_value; - real_2expN (&max_value, GET_MODE_IBIT (mode), mode); - real_2expN (&epsilon_value, -GET_MODE_FBIT (mode), mode); + real_2expN (&max_value, GET_MODE_IBIT (mode), VOIDmode); + real_2expN (&epsilon_value, -GET_MODE_FBIT (mode), VOIDmode); if (SIGNED_FIXED_POINT_MODE_P (mode)) min_value = real_value_negate (&max_value); @@ -127,7 +127,7 @@ fixed_from_string (FIXED_VALUE_TYPE *f, const char *str, machine_mode mode) || (temp == FIXED_MAX_EPS && ALL_ACCUM_MODE_P (f->mode))) warning (OPT_Woverflow, "large fixed-point constant implicitly truncated to fixed-point type"); - real_2expN (&base_value, fbit, mode); + real_2expN (&base_value, fbit, VOIDmode); real_arithmetic (&fixed_value, MULT_EXPR, &real_value, &base_value); wide_int w = real_to_integer (&fixed_value, &fail, GET_MODE_PRECISION (mode)); @@ -158,7 +158,7 @@ fixed_to_decimal (char *str, const FIXED_VALUE_TYPE *f_orig, REAL_VALUE_TYPE real_value, base_value, fixed_value; signop sgn = UNSIGNED_FIXED_POINT_MODE_P (f_orig->mode) ? UNSIGNED : SIGNED; - real_2expN (&base_value, GET_MODE_FBIT (f_orig->mode), f_orig->mode); + real_2expN (&base_value, GET_MODE_FBIT (f_orig->mode), VOIDmode); real_from_integer (&real_value, VOIDmode, wide_int::from (f_orig->data, GET_MODE_PRECISION (f_orig->mode), sgn), @@ -1052,7 +1052,7 @@ fixed_convert_from_real (FIXED_VALUE_TYPE *f, machine_mode mode, real_value = *a; f->mode = mode; - real_2expN (&base_value, fbit, mode); + real_2expN (&base_value, fbit, VOIDmode); real_arithmetic (&fixed_value, MULT_EXPR, &real_value, &base_value); wide_int w = real_to_integer (&fixed_value, &fail, @@ -1104,7 +1104,7 @@ real_convert_from_fixed (REAL_VALUE_TYPE *r, machine_mode mode, REAL_VALUE_TYPE base_value, fixed_value, real_value; signop sgn = UNSIGNED_FIXED_POINT_MODE_P (f->mode) ? UNSIGNED : SIGNED; - real_2expN (&base_value, GET_MODE_FBIT (f->mode), f->mode); + real_2expN (&base_value, GET_MODE_FBIT (f->mode), VOIDmode); real_from_integer (&fixed_value, VOIDmode, wide_int::from (f->data, GET_MODE_PRECISION (f->mode), sgn), sgn);