On Tue, Apr 22, 2014 at 9:45 PM, Richard Sandiford <rdsandif...@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,