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
This commit is contained in:
Alexander Monakov 2018-09-03 19:53:04 +03:00 committed by Alexander Monakov
parent a6405b11a6
commit d2391983fc
2 changed files with 15 additions and 8 deletions

View 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...

View 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;
}