tree-loop-distribution: convert to gcc_stablesort
authorAlexander Monakov <amonakov@ispras.ru>
Mon, 3 Sep 2018 16:53:04 +0000 (19:53 +0300)
committerAlexander Monakov <amonakov@gcc.gnu.org>
Mon, 3 Sep 2018 16:53:04 +0000 (19:53 +0300)
* tree-loop-distribution.c (offset_cmp): Convert to C-qsort-style
tri-state comparator.
(fuse_memset_builtins): Change std::stable_sort to gcc_stablesort.

From-SVN: r264067

gcc/ChangeLog
gcc/tree-loop-distribution.c

index 99c5ca75fa18b84fb9f66536a5aadb63cef9a1ef..5fe7fd8d755979655579d852acb297c828cb7190 100644 (file)
@@ -1,3 +1,9 @@
+2018-09-03  Alexander Monakov  <amonakov@ispras.ru>
+
+       * tree-loop-distribution.c (offset_cmp): Convert to C-qsort-style
+       tri-state comparator.
+       (fuse_memset_builtins): Change std::stable_sort to gcc_stablesort.
+
 2018-09-03  Alexander Monakov  <amonakov@ispras.ru>
 
        * sort.cc (struct sort_ctx): New field 'nlim'.  Use it...
index 120661447f00586d767ff6cdb4898087fd47f3dd..d8db03b545b08929a28cd81fd3308c77bc5e151c 100644 (file)
@@ -90,7 +90,6 @@ along with GCC; see the file COPYING3.  If not see
        data reuse.  */
 
 #include "config.h"
-#define INCLUDE_ALGORITHM /* stable_sort */
 #include "system.h"
 #include "coretypes.h"
 #include "backend.h"
@@ -2561,12 +2560,14 @@ version_for_distribution_p (vec<struct partition *> *partitions,
 
 /* Compare base offset of builtin mem* partitions P1 and P2.  */
 
-static bool
-offset_cmp (struct partition *p1, struct partition *p2)
+static int
+offset_cmp (const void *vp1, const void *vp2)
 {
-  gcc_assert (p1 != NULL && p1->builtin != NULL);
-  gcc_assert (p2 != NULL && p2->builtin != NULL);
-  return p1->builtin->dst_base_offset < p2->builtin->dst_base_offset;
+  struct partition *p1 = *(struct partition *const *) vp1;
+  struct partition *p2 = *(struct partition *const *) vp2;
+  unsigned HOST_WIDE_INT o1 = p1->builtin->dst_base_offset;
+  unsigned HOST_WIDE_INT o2 = p2->builtin->dst_base_offset;
+  return (o2 < o1) - (o1 < o2);
 }
 
 /* Fuse adjacent memset builtin PARTITIONS if possible.  This is a special
@@ -2618,8 +2619,8 @@ fuse_memset_builtins (vec<struct partition *> *partitions)
        }
 
       /* Stable sort is required in order to avoid breaking dependence.  */
-      std::stable_sort (&(*partitions)[i],
-                       &(*partitions)[i] + j - i, offset_cmp);
+      gcc_stablesort (&(*partitions)[i], j - i, sizeof (*partitions)[i],
+                     offset_cmp);
       /* Continue with next partition.  */
       i = j;
     }