line-map.c (location_adhoc_data_update): Perform addition in uintptr_t type rather...
authorJakub Jelinek <jakub@redhat.com>
Wed, 21 Jun 2017 10:59:12 +0000 (12:59 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 21 Jun 2017 10:59:12 +0000 (12:59 +0200)
* line-map.c (location_adhoc_data_update): Perform addition in
uintptr_t type rather than char * type.  Read *data using
ptrdiff_t type instead of int64_t.
(get_combined_adhoc_loc): Change offset type to ptrdiff_t from
int64_t.

From-SVN: r249446

libcpp/ChangeLog
libcpp/line-map.c

index 9665f6e16c91a0db0443ff78ff30677e62c99638..526b8023b3886fe679fd7c63be9f355719438db4 100644 (file)
@@ -1,3 +1,11 @@
+2017-06-21  Jakub Jelinek  <jakub@redhat.com>
+
+       * line-map.c (location_adhoc_data_update): Perform addition in
+       uintptr_t type rather than char * type.  Read *data using
+       ptrdiff_t type instead of int64_t.
+       (get_combined_adhoc_loc): Change offset type to ptrdiff_t from
+       int64_t.
+
 2017-06-20  David Malcolm  <dmalcolm@redhat.com>
 
        * include/line-map.h (class rich_location): Document that attempts
index 7ba003add98701ca91ad8970a4cfff1882f8d789..476a465efa08675ef3a9a76275cad284ef7464ee 100644 (file)
@@ -99,7 +99,8 @@ location_adhoc_data_eq (const void *l1, const void *l2)
 static int
 location_adhoc_data_update (void **slot, void *data)
 {
-  *((char **) slot) += *((int64_t *) data);
+  *((char **) slot)
+    = (char *) ((uintptr_t) *((char **) slot) + *((ptrdiff_t *) data));
   return 1;
 }
 
@@ -221,7 +222,7 @@ get_combined_adhoc_loc (struct line_maps *set,
          set->location_adhoc_data_map.allocated)
        {
          char *orig_data = (char *) set->location_adhoc_data_map.data;
-         int64_t offset;
+         ptrdiff_t offset;
          /* Cast away extern "C" from the type of xrealloc.  */
          line_map_realloc reallocator = (set->reallocator
                                          ? set->reallocator