summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch89
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;
+