diff options
Diffstat (limited to 'app-text/mecab/files/mecab-0.996-clang-16-register.patch')
-rw-r--r-- | app-text/mecab/files/mecab-0.996-clang-16-register.patch | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/app-text/mecab/files/mecab-0.996-clang-16-register.patch b/app-text/mecab/files/mecab-0.996-clang-16-register.patch new file mode 100644 index 000000000000..5e782e61fb0c --- /dev/null +++ b/app-text/mecab/files/mecab-0.996-clang-16-register.patch @@ -0,0 +1,89 @@ +https://bugs.gentoo.org/894362 +https://github.com/taku910/mecab/pull/66 + +From 731d738f33dcf62dc9da93104ca1dd6f4c7c9c5f Mon Sep 17 00:00:00 2001 +From: Yuriy Chernyshov <thegeorg@yandex-team.ru> +Date: Fri, 11 Feb 2022 12:31:33 +0300 +Subject: [PATCH 1/2] Remove register storage specifier + +register does not work in modern C / C++. +--- a/src/char_property.h ++++ b/src/char_property.h +@@ -37,7 +37,7 @@ class CharProperty { + inline const char *seekToOtherType(const char *begin, const char *end, + CharInfo c, CharInfo *fail, + size_t *mblen, size_t *clen) const { +- register const char *p = begin; ++ const char *p = begin; + *clen = 0; + while (p != end && c.isKindOf(*fail = getCharInfo(p, end, mblen))) { + p += *mblen; + +From 82fd6424fde64c77f49695883a18f368ba96850e Mon Sep 17 00:00:00 2001 +From: Yuriy Chernyshov <thegeorg@yandex-team.ru> +Date: Sat, 12 Feb 2022 14:31:03 +0300 +Subject: [PATCH 2/2] More fixes + +--- a/src/darts.h ++++ b/src/darts.h +@@ -404,10 +404,10 @@ class DoubleArrayImpl { + T result; + set_result(result, -1, 0); + +- register array_type_ b = array_[node_pos].base; +- register array_u_type_ p; ++ array_type_ b = array_[node_pos].base; ++ array_u_type_ p; + +- for (register size_t i = 0; i < len; ++i) { ++ for (size_t i = 0; i < len; ++i) { + p = b +(node_u_type_)(key[i]) + 1; + if (static_cast<array_u_type_>(b) == array_[p].check) + b = array_[p].base; +@@ -431,12 +431,12 @@ class DoubleArrayImpl { + size_t node_pos = 0) const { + if (!len) len = length_func_()(key); + +- register array_type_ b = array_[node_pos].base; +- register size_t num = 0; +- register array_type_ n; +- register array_u_type_ p; ++ array_type_ b = array_[node_pos].base; ++ size_t num = 0; ++ array_type_ n; ++ array_u_type_ p; + +- for (register size_t i = 0; i < len; ++i) { ++ for (size_t i = 0; i < len; ++i) { + p = b; // + 0; + n = array_[p].base; + if ((array_u_type_) b == array_[p].check && n < 0) { +@@ -469,8 +469,8 @@ class DoubleArrayImpl { + size_t len = 0) const { + if (!len) len = length_func_()(key); + +- register array_type_ b = array_[node_pos].base; +- register array_u_type_ p; ++ array_type_ b = array_[node_pos].base; ++ array_u_type_ p; + + for (; key_pos < len; ++key_pos) { + p = b +(node_u_type_)(key[key_pos]) + 1; +--- a/src/viterbi.cpp ++++ b/src/viterbi.cpp +@@ -318,11 +318,11 @@ template <bool IsAllPath> bool connect(size_t pos, Node *rnode, + const Connector *connector, + Allocator<Node, Path> *allocator) { + for (;rnode; rnode = rnode->bnext) { +- register long best_cost = 2147483647; ++ long best_cost = 2147483647; + Node* best_node = 0; + for (Node *lnode = end_node_list[pos]; lnode; lnode = lnode->enext) { +- register int lcost = connector->cost(lnode, rnode); // local cost +- register long cost = lnode->cost + lcost; ++ int lcost = connector->cost(lnode, rnode); // local cost ++ long cost = lnode->cost + lcost; + + if (cost < best_cost) { + best_node = lnode; + |