* gcov-io.c (gcov_read_words): Don't call memmove if excess is 0.
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 3 Jul 2014 14:39:05 +0000 (14:39 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 3 Jul 2014 14:39:05 +0000 (14:39 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212264 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-ada-spec.c
gcc/data-streamer-in.c
gcc/expmed.c
gcc/gcov-io.c
gcc/wide-int-print.cc

index 84a105e..6d2a558 100644 (file)
@@ -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.
index 672c4e8..d667ed8 100644 (file)
@@ -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.
index a21bc49..5142f07 100644 (file)
@@ -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;
index 1f74278..7bec1b1 100644 (file)
@@ -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;
        }
index 861626e..36c4346 100644 (file)
@@ -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
index 1fdb958..547276f 100644 (file)
@@ -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
index c79c781..9b2893a 100644 (file)
@@ -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 ());
     }