diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/c-family/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c-family/c-ada-spec.c | 5 | ||||
-rw-r--r-- | gcc/data-streamer-in.c | 2 | ||||
-rw-r--r-- | gcc/expmed.c | 5 | ||||
-rw-r--r-- | gcc/gcov-io.c | 7 | ||||
-rw-r--r-- | gcc/wide-int-print.cc | 3 |
7 files changed, 27 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 84a105e..6d2a558d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2014-07-03 Jakub Jelinek <jakub@redhat.com> + + * gcov-io.c (gcov_read_words): Don't call memmove if excess is 0. + * data-streamer-in.c (streamer_read_hwi): Shift UHWI 1 instead of + HWI 1 and negate the unsigned value. + * expmed.c (expand_sdiv_pow2): For modes wider than word always + use AND instead of shift. + * wide-int-print.cc (print_decs): Negate UHWI instead of HWI. + 2014-07-03 Marek Polacek <polacek@redhat.com> * doc/invoke.texi (-fsanitize=bounds): Tweak wording. diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 672c4e8..d667ed8 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2014-07-03 Jakub Jelinek <jakub@redhat.com> + + * c-ada-spec.c (dump_ada_nodes): Don't call qsort if + comments->count <= 1, as comments->entries might be NULL. + 2014-07-01 Marek Polacek <polacek@redhat.com> * c.opt (Wint-conversion): New option. diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c index a21bc49..5142f07 100644 --- a/gcc/c-family/c-ada-spec.c +++ b/gcc/c-family/c-ada-spec.c @@ -636,8 +636,9 @@ dump_ada_nodes (pretty_printer *pp, const char *source_file) comments = cpp_get_comments (parse_in); /* Sort the comments table by sloc. */ - qsort (comments->entries, comments->count, sizeof (cpp_comment), - compare_comment); + if (comments->count > 1) + qsort (comments->entries, comments->count, sizeof (cpp_comment), + compare_comment); /* Interleave comments and declarations in line number order. */ i = j = 0; diff --git a/gcc/data-streamer-in.c b/gcc/data-streamer-in.c index 1f74278..7bec1b15 100644 --- a/gcc/data-streamer-in.c +++ b/gcc/data-streamer-in.c @@ -174,7 +174,7 @@ streamer_read_hwi (struct lto_input_block *ib) if ((byte & 0x80) == 0) { if ((shift < HOST_BITS_PER_WIDE_INT) && (byte & 0x40)) - result |= - ((HOST_WIDE_INT)1 << shift); + result |= - (HOST_WIDE_INT_1U << shift); return result; } diff --git a/gcc/expmed.c b/gcc/expmed.c index 861626e..36c4346 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -3795,8 +3795,9 @@ expand_sdiv_pow2 (enum machine_mode mode, rtx op0, HOST_WIDE_INT d) temp = gen_reg_rtx (mode); temp = emit_store_flag (temp, LT, op0, const0_rtx, mode, 0, -1); - if (shift_cost (optimize_insn_for_speed_p (), mode, ushift) - > COSTS_N_INSNS (1)) + if (GET_MODE_BITSIZE (mode) >= BITS_PER_WORD + || shift_cost (optimize_insn_for_speed_p (), mode, ushift) + > COSTS_N_INSNS (1)) temp = expand_binop (mode, and_optab, temp, gen_int_mode (d - 1, mode), NULL_RTX, 0, OPTAB_LIB_WIDEN); else diff --git a/gcc/gcov-io.c b/gcc/gcov-io.c index 1fdb958..547276f 100644 --- a/gcc/gcov-io.c +++ b/gcc/gcov-io.c @@ -489,14 +489,15 @@ gcov_read_words (unsigned words) if (excess < words) { gcov_var.start += gcov_var.offset; -#if IN_LIBGCOV if (excess) { +#if IN_LIBGCOV memcpy (gcov_var.buffer, gcov_var.buffer + gcov_var.offset, 4); - } #else - memmove (gcov_var.buffer, gcov_var.buffer + gcov_var.offset, excess * 4); + memmove (gcov_var.buffer, gcov_var.buffer + gcov_var.offset, + excess * 4); #endif + } gcov_var.offset = 0; gcov_var.length = excess; #if IN_LIBGCOV diff --git a/gcc/wide-int-print.cc b/gcc/wide-int-print.cc index c79c781..9b2893a 100644 --- a/gcc/wide-int-print.cc +++ b/gcc/wide-int-print.cc @@ -62,7 +62,8 @@ print_decs (const wide_int_ref &wi, char *buf) || (wi.get_len () == 1)) { if (wi::neg_p (wi)) - sprintf (buf, "-" HOST_WIDE_INT_PRINT_UNSIGNED, -wi.to_shwi ()); + sprintf (buf, "-" HOST_WIDE_INT_PRINT_UNSIGNED, + -(unsigned HOST_WIDE_INT) wi.to_shwi ()); else sprintf (buf, HOST_WIDE_INT_PRINT_DEC, wi.to_shwi ()); } |