diff options
author | Tamar Christina <tamar.christina@arm.com> | 2023-10-02 14:23:59 +0100 |
---|---|---|
committer | Tamar Christina <tamar.christina@arm.com> | 2023-10-02 14:23:59 +0100 |
commit | bada3c27d855430af736de51439ce275cffda754 (patch) | |
tree | ed547f306e347eea6d83503f3488eaa23bbf89e3 /gcc | |
parent | f2b23a59cbe46a7839811cbeb962c2081b329b73 (diff) | |
download | gcc-bada3c27d855430af736de51439ce275cffda754.zip gcc-bada3c27d855430af736de51439ce275cffda754.tar.gz gcc-bada3c27d855430af736de51439ce275cffda754.tar.bz2 |
Revert "ifcvt: replace C++ sort with vec::qsort [PR109154]"
This reverts commit 19610580d49f3d2d8d511fba55b39efa0764dfc2.
It broke bootstrap because of a recently added assert, and
fixing will take time.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/tree-if-conv.cc | 29 |
1 files changed, 6 insertions, 23 deletions
diff --git a/gcc/tree-if-conv.cc b/gcc/tree-if-conv.cc index 281984d..a8c9159 100644 --- a/gcc/tree-if-conv.cc +++ b/gcc/tree-if-conv.cc @@ -80,6 +80,7 @@ along with GCC; see the file COPYING3. If not see <L18>:; */ +#define INCLUDE_ALGORITHM #include "config.h" #include "system.h" #include "coretypes.h" @@ -2044,28 +2045,6 @@ 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. @@ -2207,6 +2186,7 @@ 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++) { @@ -2224,7 +2204,10 @@ predicate_scalar_phi (gphi *phi, gimple_stmt_iterator *gsi) } /* Sort elements based on rankings ARGS. */ - argsKV.qsort (cmp_arg_entry); + std::sort(argsKV.begin(), argsKV.end(), [](const ArgEntry &left, + const ArgEntry &right) { + return left.second < right.second; + }); for (i = 0; i < args.length (); i++) args[i] = argsKV[i].first; |