aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2014-07-03 16:39:05 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2014-07-03 16:39:05 +0200
commit00a7ba584062ce49f20fd9e10e5396b296b0a7b5 (patch)
tree0f9f89a40e0f06ad2065a6c8389c198699c9f249 /gcc
parente21526739585ce47c37e40c1da738ba42c7a7e02 (diff)
downloadgcc-00a7ba584062ce49f20fd9e10e5396b296b0a7b5.zip
gcc-00a7ba584062ce49f20fd9e10e5396b296b0a7b5.tar.gz
gcc-00a7ba584062ce49f20fd9e10e5396b296b0a7b5.tar.bz2
gcov-io.c (gcov_read_words): Don't call memmove if excess is 0.
* 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. c-family/ * c-ada-spec.c (dump_ada_nodes): Don't call qsort if comments->count <= 1, as comments->entries might be NULL. From-SVN: r212264
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/c-family/ChangeLog5
-rw-r--r--gcc/c-family/c-ada-spec.c5
-rw-r--r--gcc/data-streamer-in.c2
-rw-r--r--gcc/expmed.c5
-rw-r--r--gcc/gcov-io.c7
-rw-r--r--gcc/wide-int-print.cc3
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 ());
}