Commit 22d49f94 authored by Kenichi Handa's avatar Kenichi Handa

(sub_char_table_set_range): Optimized for the case

DEPTH == 3.  Add workaround code for a GCC optimization bug.
parent 885317d8
...@@ -377,7 +377,7 @@ sub_char_table_set_range (table, depth, min_char, from, to, val) ...@@ -377,7 +377,7 @@ sub_char_table_set_range (table, depth, min_char, from, to, val)
{ {
int max_char = min_char + chartab_chars[depth] - 1; int max_char = min_char + chartab_chars[depth] - 1;
if (from <= min_char && to >= max_char) if (depth == 3 || from <= min_char && to >= max_char)
*table = val; *table = val;
else else
{ {
...@@ -390,12 +390,12 @@ sub_char_table_set_range (table, depth, min_char, from, to, val) ...@@ -390,12 +390,12 @@ sub_char_table_set_range (table, depth, min_char, from, to, val)
from = min_char; from = min_char;
if (to > max_char) if (to > max_char)
to = max_char; to = max_char;
i = CHARTAB_IDX (from, depth, min_char);
j = CHARTAB_IDX (to, depth, min_char); j = CHARTAB_IDX (to, depth, min_char);
for (i = CHARTAB_IDX (from, depth, min_char); i <= j; i++) min_char += chartab_chars[depth] * i;
for (; i <= j; i++, min_char += chartab_chars[depth])
sub_char_table_set_range (XSUB_CHAR_TABLE (*table)->contents + i, sub_char_table_set_range (XSUB_CHAR_TABLE (*table)->contents + i,
depth, depth, min_char, from, to, val);
min_char + chartab_chars[depth] * i,
from, to, val);
} }
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment