public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r14-4361] ifcvt: replace C++ sort with vec::qsort [PR109154]
@ 2023-10-02 10:53 Tamar Christina
0 siblings, 0 replies; only message in thread
From: Tamar Christina @ 2023-10-02 10:53 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:19610580d49f3d2d8d511fba55b39efa0764dfc2
commit r14-4361-g19610580d49f3d2d8d511fba55b39efa0764dfc2
Author: Tamar Christina <tamar.christina@arm.com>
Date: Mon Oct 2 11:48:26 2023 +0100
ifcvt: replace C++ sort with vec::qsort [PR109154]
As requested later on, this replaces the C++ sort with vec::qsort.
gcc/ChangeLog:
PR tree-optimization/109154
* tree-if-conv.cc (INCLUDE_ALGORITHM): Remove.
(cmp_arg_entry): New.
(predicate_scalar_phi): Use it.
Diff:
---
gcc/tree-if-conv.cc | 29 +++++++++++++++++++++++------
1 file changed, 23 insertions(+), 6 deletions(-)
diff --git a/gcc/tree-if-conv.cc b/gcc/tree-if-conv.cc
index a8c915913ae..281984d0522 100644
--- a/gcc/tree-if-conv.cc
+++ b/gcc/tree-if-conv.cc
@@ -80,7 +80,6 @@ along with GCC; see the file COPYING3. If not see
<L18>:;
*/
-#define INCLUDE_ALGORITHM
#include "config.h"
#include "system.h"
#include "coretypes.h"
@@ -2045,6 +2044,28 @@ gen_phi_nest_statement (gphi *phi, gimple_stmt_iterator *gsi,
return lhs;
}
+typedef std::pair <tree, std::pair <unsigned, unsigned>> ArgEntry;
+static int
+cmp_arg_entry (const void *p1, const void *p2)
+{
+ const ArgEntry sval1 = *(const ArgEntry *)p1;
+ const ArgEntry sval2 = *(const ArgEntry *)p2;
+ auto x1 = sval1.second;
+ auto x2 = sval2.second;
+
+ if (x1.first < x2.first)
+ return -1;
+ else if (x1.first > x2.first)
+ return 1;
+
+ if (x1.second < x2.second)
+ return -1;
+ else if (x1.second > x2.second)
+ return 1;
+
+ return 0;
+}
+
/* Replace a scalar PHI node with a COND_EXPR using COND as condition.
This routine can handle PHI nodes with more than two arguments.
@@ -2186,7 +2207,6 @@ predicate_scalar_phi (gphi *phi, gimple_stmt_iterator *gsi)
/* Determine element with max number of occurrences and complexity. Looking at only
number of occurrences as a measure for complexity isn't enough as all usages can
be unique but the comparisons to reach the PHI node differ per branch. */
- typedef std::pair <tree, std::pair <unsigned, unsigned>> ArgEntry;
auto_vec<ArgEntry> argsKV;
for (i = 0; i < args.length (); i++)
{
@@ -2204,10 +2224,7 @@ predicate_scalar_phi (gphi *phi, gimple_stmt_iterator *gsi)
}
/* Sort elements based on rankings ARGS. */
- std::sort(argsKV.begin(), argsKV.end(), [](const ArgEntry &left,
- const ArgEntry &right) {
- return left.second < right.second;
- });
+ argsKV.qsort (cmp_arg_entry);
for (i = 0; i < args.length (); i++)
args[i] = argsKV[i].first;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-10-02 10:53 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-02 10:53 [gcc r14-4361] ifcvt: replace C++ sort with vec::qsort [PR109154] Tamar Christina
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).