diff options
| author | Kenichi Handa | 2002-03-05 00:08:31 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2002-03-05 00:08:31 +0000 |
| commit | 22d49f94bde4da2f582a3ad77e2f70fb4d6370da (patch) | |
| tree | f5888de58124437025c55ae0901ae8ad40acc7f3 /src/chartab.c | |
| parent | 885317d81756eb4769953d9980481cea029a9a06 (diff) | |
| download | emacs-22d49f94bde4da2f582a3ad77e2f70fb4d6370da.tar.gz emacs-22d49f94bde4da2f582a3ad77e2f70fb4d6370da.zip | |
(sub_char_table_set_range): Optimized for the case
DEPTH == 3. Add workaround code for a GCC optimization bug.
Diffstat (limited to 'src/chartab.c')
| -rw-r--r-- | src/chartab.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/chartab.c b/src/chartab.c index 5bf6d6e3550..8e942beaae8 100644 --- a/src/chartab.c +++ b/src/chartab.c | |||
| @@ -377,7 +377,7 @@ sub_char_table_set_range (table, depth, min_char, from, to, val) | |||
| 377 | { | 377 | { |
| 378 | int max_char = min_char + chartab_chars[depth] - 1; | 378 | int max_char = min_char + chartab_chars[depth] - 1; |
| 379 | 379 | ||
| 380 | if (from <= min_char && to >= max_char) | 380 | if (depth == 3 || from <= min_char && to >= max_char) |
| 381 | *table = val; | 381 | *table = val; |
| 382 | else | 382 | else |
| 383 | { | 383 | { |
| @@ -390,12 +390,12 @@ sub_char_table_set_range (table, depth, min_char, from, to, val) | |||
| 390 | from = min_char; | 390 | from = min_char; |
| 391 | if (to > max_char) | 391 | if (to > max_char) |
| 392 | to = max_char; | 392 | to = max_char; |
| 393 | i = CHARTAB_IDX (from, depth, min_char); | ||
| 393 | j = CHARTAB_IDX (to, depth, min_char); | 394 | j = CHARTAB_IDX (to, depth, min_char); |
| 394 | for (i = CHARTAB_IDX (from, depth, min_char); i <= j; i++) | 395 | min_char += chartab_chars[depth] * i; |
| 396 | for (; i <= j; i++, min_char += chartab_chars[depth]) | ||
| 395 | sub_char_table_set_range (XSUB_CHAR_TABLE (*table)->contents + i, | 397 | sub_char_table_set_range (XSUB_CHAR_TABLE (*table)->contents + i, |
| 396 | depth, | 398 | depth, min_char, from, to, val); |
| 397 | min_char + chartab_chars[depth] * i, | ||
| 398 | from, to, val); | ||
| 399 | } | 399 | } |
| 400 | } | 400 | } |
| 401 | 401 | ||