]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
toplev.c (init_local_tick): Avoid signed integer multiplication overflow.
authorJakub Jelinek <jakub@redhat.com>
Sat, 22 Mar 2014 14:03:20 +0000 (15:03 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sat, 22 Mar 2014 14:03:20 +0000 (15:03 +0100)
* toplev.c (init_local_tick): Avoid signed integer multiplication
overflow.
* genautomata.c (reserv_sets_hash_value): Fix rotate idiom, avoid
shift by first operand's bitsize.

From-SVN: r208765

gcc/ChangeLog
gcc/genautomata.c
gcc/toplev.c

index ba749275b1a77915482dd56d081778fdffb6580e..dbd497177bb7fc6b08b868f8c1a88553234829da 100644 (file)
@@ -1,3 +1,10 @@
+2014-03-22  Jakub Jelinek  <jakub@redhat.com>
+
+       * toplev.c (init_local_tick): Avoid signed integer multiplication
+       overflow.
+       * genautomata.c (reserv_sets_hash_value): Fix rotate idiom, avoid
+       shift by first operand's bitsize.
+
 2014-03-21  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/60610
index 9db86155008d386ab660b74406ff35872942ec90..0c61278ff4cdc00ae7b34f0407878efdd4f53489 100644 (file)
@@ -3494,7 +3494,7 @@ reserv_sets_hash_value (reserv_sets_t reservs)
     {
       reservs_num--;
       hash_value += ((*reserv_ptr >> i)
-                    | (*reserv_ptr << ((sizeof (set_el_t) * CHAR_BIT) & -i)));
+                    | (*reserv_ptr << (((sizeof (set_el_t) * CHAR_BIT) - 1) & -i)));
       i++;
       if (i == sizeof (set_el_t) * CHAR_BIT)
        i = 0;
index c652522a3613a635b0492fb84b94543a0bbaf6fc..0f7d452f3786d5ad33f70fab0ec58381c0f4903d 100644 (file)
@@ -261,7 +261,7 @@ init_local_tick (void)
        struct timeval tv;
 
        gettimeofday (&tv, NULL);
-       local_tick = tv.tv_sec * 1000 + tv.tv_usec / 1000;
+       local_tick = (unsigned) tv.tv_sec * 1000 + tv.tv_usec / 1000;
       }
 #else
       {