diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/fns.c | 8 |
1 files changed, 5 insertions, 3 deletions
| @@ -506,16 +506,18 @@ Symbols are also allowed; their print names are used instead. */) | |||
| 506 | /* String data is normally allocated with word alignment, but | 506 | /* String data is normally allocated with word alignment, but |
| 507 | there are exceptions (notably pure strings) so we restrict the | 507 | there are exceptions (notably pure strings) so we restrict the |
| 508 | wordwise skipping to safe architectures. */ | 508 | wordwise skipping to safe architectures. */ |
| 509 | if (HAVE_FAST_UNALIGNED_ACCESS) | 509 | #ifdef HAVE_FAST_UNALIGNED_ACCESS |
| 510 | { | 510 | { |
| 511 | /* First compare entire machine words. */ | 511 | /* First compare entire machine words. */ |
| 512 | int ws = sizeof (size_t); | 512 | int ws = sizeof (size_t); |
| 513 | const char *w1 = SSDATA (string1); | 513 | const char *w1 = SSDATA (string1); |
| 514 | const char *w2 = SSDATA (string2); | 514 | const char *w2 = SSDATA (string2); |
| 515 | while (b < nb - ws + 1 && load_unaligned_size_t (w1 + b) | 515 | while (b < nb - ws + 1 |
| 516 | == load_unaligned_size_t (w2 + b)) | 516 | && (load_unaligned_size_t (w1 + b) |
| 517 | == load_unaligned_size_t (w2 + b))) | ||
| 517 | b += ws; | 518 | b += ws; |
| 518 | } | 519 | } |
| 520 | #endif | ||
| 519 | 521 | ||
| 520 | /* Scan forward to the differing byte. */ | 522 | /* Scan forward to the differing byte. */ |
| 521 | while (b < nb && SREF (string1, b) == SREF (string2, b)) | 523 | while (b < nb && SREF (string1, b) == SREF (string2, b)) |