From patchwork Tue Apr 22 19:45:11 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 341451 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 4C82E140104 for ; Wed, 23 Apr 2014 05:45:30 +1000 (EST) 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:cc:subject:date:message-id:mime-version:content-type; q=dns; s=default; b=JyC4HvvkctY4eSYr3ulou7RFTMHvzv5JdjA53TpkdOXBar3yLn t6IG75uA+3Pb9yoHhElXeuju9WUOw0pUc3EXKESikLEgmaND0scP0Q23U8z5kjfl aZWK1NlnmcS5Q3RuJaouVlzFUbMOq6RVbiaz3aB/o5FvrFQ9sGRE8iGDI= 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:cc:subject:date:message-id:mime-version:content-type; s= default; bh=L/tO5peYeEWKeioFlqIhvGkJnyo=; b=HWPJ2f483yl0FXm4a+kh m82ySoKuFJdBDfZ8kRWaC1x3E0m5loKyP4Ct1qXbnipe4bg4qlVCdMAHQDfXp9US VVBPaF0Bepm0BxwwbSUv5i5SlCBwXJGU9ks9OtxsaW5huntfK4pF8gCRX31PqSpT C2vJH8bE2Ou4PbPv4rfj+Hw= Received: (qmail 9693 invoked by alias); 22 Apr 2014 19:45:23 -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 9683 invoked by uid 89); 22 Apr 2014 19:45:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-we0-f174.google.com Received: from mail-we0-f174.google.com (HELO mail-we0-f174.google.com) (74.125.82.174) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Tue, 22 Apr 2014 19:45:16 +0000 Received: by mail-we0-f174.google.com with SMTP id t60so5518333wes.33 for ; Tue, 22 Apr 2014 12:45:13 -0700 (PDT) X-Received: by 10.194.120.101 with SMTP id lb5mr3525775wjb.74.1398195913626; Tue, 22 Apr 2014 12:45:13 -0700 (PDT) Received: from localhost ([2.26.169.52]) by mx.google.com with ESMTPSA id mw3sm24427351wic.7.2014.04.22.12.45.12 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 22 Apr 2014 12:45:13 -0700 (PDT) From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, zadeck@naturalbridge.com, mikestump@comcast.net, rdsandiford@googlemail.com Cc: zadeck@naturalbridge.com, mikestump@comcast.net Subject: [wide-int 1/8] Fix some off-by-one errors and bounds tests Date: Tue, 22 Apr 2014 20:45:11 +0100 Message-ID: <87d2g9f8s8.fsf@talisman.default> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 This is the first of 8 patches from reading through the diff with mainline. Some places had an off-by-one error on an index and some used "<= 0" instead of ">= 0". I think we should use MAX_BITSIZE_MODE_ANY_MODE rather than MAX_BITSIZE_MODE_ANY_INT when handling floating-point modes. Two hunks contain unrelated formatting fixes too. Tested on x86_64-linux-gnu. OK to install? Thanks, Richard Index: gcc/c-family/c-ada-spec.c =================================================================== --- gcc/c-family/c-ada-spec.c 2014-04-22 20:31:10.632895953 +0100 +++ gcc/c-family/c-ada-spec.c 2014-04-22 20:31:24.880998602 +0100 @@ -2205,8 +2205,9 @@ dump_generic_ada_node (pretty_printer *b val = -val; } sprintf (pp_buffer (buffer)->digit_buffer, - "16#%" HOST_WIDE_INT_PRINT "x", val.elt (val.get_len () - 1)); - for (i = val.get_len () - 2; i <= 0; i--) + "16#%" HOST_WIDE_INT_PRINT "x", + val.elt (val.get_len () - 1)); + for (i = val.get_len () - 2; i >= 0; i--) sprintf (pp_buffer (buffer)->digit_buffer, HOST_WIDE_INT_PRINT_PADDED_HEX, val.elt (i)); pp_string (buffer, pp_buffer (buffer)->digit_buffer); Index: gcc/dbxout.c =================================================================== --- gcc/dbxout.c 2014-04-22 20:31:10.632895953 +0100 +++ gcc/dbxout.c 2014-04-22 20:31:24.881998608 +0100 @@ -720,7 +720,7 @@ stabstr_O (tree cst) } prec -= res_pres; - for (i = prec - 3; i <= 0; i = i - 3) + for (i = prec - 3; i >= 0; i = i - 3) { digit = wi::extract_uhwi (cst, i, 3); stabstr_C ('0' + digit); Index: gcc/dwarf2out.c =================================================================== --- gcc/dwarf2out.c 2014-04-22 20:31:10.632895953 +0100 +++ gcc/dwarf2out.c 2014-04-22 20:31:24.884998630 +0100 @@ -1847,7 +1847,7 @@ output_loc_operands (dw_loc_descr_ref lo int i; int len = get_full_len (*val2->v.val_wide); if (WORDS_BIG_ENDIAN) - for (i = len; i >= 0; --i) + for (i = len - 1; i >= 0; --i) dw2_asm_output_data (HOST_BITS_PER_WIDE_INT / HOST_BITS_PER_CHAR, val2->v.val_wide->elt (i), NULL); else @@ -2073,7 +2073,7 @@ output_loc_operands (dw_loc_descr_ref lo dw2_asm_output_data (1, len * l, NULL); if (WORDS_BIG_ENDIAN) - for (i = len; i >= 0; --i) + for (i = len - 1; i >= 0; --i) dw2_asm_output_data (l, val2->v.val_wide->elt (i), NULL); else for (i = 0; i < len; ++i) @@ -5398,11 +5398,11 @@ print_die (dw_die_ref die, FILE *outfile int i = a->dw_attr_val.v.val_wide->get_len (); fprintf (outfile, "constant ("); gcc_assert (i > 0); - if (a->dw_attr_val.v.val_wide->elt (i) == 0) + if (a->dw_attr_val.v.val_wide->elt (i - 1) == 0) fprintf (outfile, "0x"); fprintf (outfile, HOST_WIDE_INT_PRINT_HEX, a->dw_attr_val.v.val_wide->elt (--i)); - while (-- i >= 0) + while (--i >= 0) fprintf (outfile, HOST_WIDE_INT_PRINT_PADDED_HEX, a->dw_attr_val.v.val_wide->elt (i)); fprintf (outfile, ")"); @@ -8723,7 +8723,7 @@ output_die (dw_die_ref die) NULL); if (WORDS_BIG_ENDIAN) - for (i = len; i >= 0; --i) + for (i = len - 1; i >= 0; --i) { dw2_asm_output_data (l, a->dw_attr_val.v.val_wide->elt (i), name); Index: gcc/simplify-rtx.c =================================================================== --- gcc/simplify-rtx.c 2014-04-22 20:31:10.632895953 +0100 +++ gcc/simplify-rtx.c 2014-04-22 20:31:24.884998630 +0100 @@ -5395,7 +5395,7 @@ simplify_immed_subreg (enum machine_mode case MODE_DECIMAL_FLOAT: { REAL_VALUE_TYPE r; - long tmp[MAX_BITSIZE_MODE_ANY_INT / 32]; + long tmp[MAX_BITSIZE_MODE_ANY_MODE / 32]; /* real_from_target wants its input in words affected by FLOAT_WORDS_BIG_ENDIAN. However, we ignore this,