From d2391983fc709bf83e3d10e00de7e06ad25464ca Mon Sep 17 00:00:00 2001 From: Alexander Monakov Date: Mon, 3 Sep 2018 19:53:04 +0300 Subject: [PATCH] tree-loop-distribution: convert to gcc_stablesort * 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 | 6 ++++++ gcc/tree-loop-distribution.c | 17 +++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 99c5ca75fa1..5fe7fd8d755 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-09-03 Alexander Monakov + + * 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 * sort.cc (struct sort_ctx): New field 'nlim'. Use it... diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c index 120661447f0..d8db03b545b 100644 --- a/gcc/tree-loop-distribution.c +++ b/gcc/tree-loop-distribution.c @@ -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 *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 *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; } -- 2.30.2