Message ID | 87d2g9f8s8.fsf@talisman.default |
---|---|
State | New |
Headers | show |
On Tue, Apr 22, 2014 at 9:45 PM, Richard Sandiford <rdsandiford@googlemail.com> wrote: > 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? Ok. Thanks, Richard. > 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,
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,