lto.c (cmp_type_location): Expand locations only once.
authorRichard Biener <rguenther@suse.de>
Tue, 5 Jun 2018 13:42:57 +0000 (13:42 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 5 Jun 2018 13:42:57 +0000 (13:42 +0000)
2018-06-05  Richard Biener  <rguenther@suse.de>

* lto.c (cmp_type_location): Expand locations only once.

From-SVN: r261201

gcc/lto/ChangeLog
gcc/lto/lto.c

index 5e1e0a9d8ee7b2a0450afde320e21c576565f751..f77634aae6a94acf63e52b2f379d65103b64a689 100644 (file)
@@ -1,3 +1,7 @@
+2018-06-05  Richard Biener  <rguenther@suse.de>
+
+       * lto.c (cmp_type_location): Expand locations only once.
+
 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
 
        * lang.opt (lto_linker_output): Add nolto-rel.
index 86f3fe49a68b46218e883fc457e831832a9b10f3..17634797c6edd7efee7699a29f50fd2043b27112 100644 (file)
@@ -1707,23 +1707,19 @@ cmp_type_location (const void *p1_, const void *p2_)
 
   tree tname1 = TYPE_NAME (*p1);
   tree tname2 = TYPE_NAME (*p2);
+  expanded_location xloc1 = expand_location (DECL_SOURCE_LOCATION (tname1));
+  expanded_location xloc2 = expand_location (DECL_SOURCE_LOCATION (tname2));
 
-  const char *f1 = DECL_SOURCE_FILE (tname1);
-  const char *f2 = DECL_SOURCE_FILE (tname2);
-
+  const char *f1 = lbasename (xloc1.file);
+  const char *f2 = lbasename (xloc2.file);
   int r = strcmp (f1, f2);
   if (r == 0)
     {
-      int l1 = DECL_SOURCE_LINE (tname1);
-      int l2 = DECL_SOURCE_LINE (tname2);
-      if (l1 == l2)
-       {
-        int l1 = DECL_SOURCE_COLUMN (tname1);
-        int l2 = DECL_SOURCE_COLUMN (tname2);
-        return l1 - l2;
-       }
-      else
-       return l1 - l2;
+      int l1 = xloc1.line;
+      int l2 = xloc2.line;
+      if (l1 != l2)
+       return l1 - l2;
+      return xloc1.column - xloc2.column;
     }
   else
     return r;