https://bugs.gentoo.org/894362 https://github.com/taku910/mecab/pull/66 From 731d738f33dcf62dc9da93104ca1dd6f4c7c9c5f Mon Sep 17 00:00:00 2001 From: Yuriy Chernyshov 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 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(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 connect(size_t pos, Node *rnode, const Connector *connector, Allocator *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;