Use 1UL constant in order to not overflow (PR c++/89383).
authorMartin Liska <mliska@suse.cz>
Mon, 18 Feb 2019 09:46:19 +0000 (10:46 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Mon, 18 Feb 2019 09:46:19 +0000 (09:46 +0000)
2019-02-18  Martin Liska  <mliska@suse.cz>

PR c++/89383
* line-map.c (linemap_line_start): Use 1UL in order
to not overflow.

From-SVN: r268981

libcpp/ChangeLog
libcpp/line-map.c

index 8af9846d7fba3ec467c0710f88e29a5596d9d05c..fa2fa7d97e87686095debbc2f31f32ca484b7ea0 100644 (file)
@@ -1,3 +1,9 @@
+2019-02-18  Martin Liska  <mliska@suse.cz>
+
+       PR c++/89383
+       * line-map.c (linemap_line_start): Use 1UL in order
+       to not overflow.
+
 2019-02-11  Martin Liska  <mliska@suse.cz>
 
        PR lto/88147
index 0e30b4b2b391de6725341d38fe71278770b5e56b..b73f5067c2449ea9ac963eb8ae342f1912fa1c40 100644 (file)
@@ -745,7 +745,8 @@ linemap_line_start (struct line_maps *set, linenum_type to_line,
          || ( /* We can't reuse the map if the line offset is sufficiently
                  large to cause overflow when computing location_t values.  */
              (to_line - ORDINARY_MAP_STARTING_LINE_NUMBER (map))
-             >= (1U << (CHAR_BIT * sizeof (linenum_type) - column_bits)))
+             >= (((uint64_t) 1)
+                 << (CHAR_BIT * sizeof (linenum_type) - column_bits)))
          || range_bits < map->m_range_bits)
        map = linemap_check_ordinary
                (const_cast <line_map *>