blob: 738a892083bdfac964dc1f7a6bbf3e55b9362102 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
/* { dg-do compile } */
/* { dg-options "-O2" } */
typedef unsigned IPos;
typedef unsigned char uch;
extern uch window[];
unsigned max_chain_length;
unsigned strstart;
int longest_match(IPos cur_match, int len, int best_len)
{
unsigned chain_length = max_chain_length;
register uch *scan = window + strstart;
register uch *match;
register uch scan_end1 = scan[best_len-1];
register uch scan_end = scan[best_len];
do {
;
match = window + cur_match;
if (match[best_len] != scan_end ||
match[best_len-1] != scan_end1 ||
*match != *scan ||
*++match != scan[1]) continue;
best_len = len;
} while ( --chain_length != 0);
return best_len;
}
|