1 # define EXTERN(type, array) extern type array[]
2 typedef unsigned char uch;
3 typedef unsigned short ush;
11 #define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
12 #define MAX_DIST (WSIZE-MIN_LOOKAHEAD)
14 typedef unsigned IPos;
15 unsigned near max_chain_length;
16 extern unsigned near strstart;
17 unsigned int near prev_length;
19 unsigned near good_match;
21 #define WMASK (WSIZE-1)
22 int longest_match(IPos cur_match)
24 unsigned chain_length = max_chain_length;
25 register uch *scan = window + strstart;
28 int best_len = prev_length;
29 IPos limit = strstart > (IPos)MAX_DIST ? strstart - (IPos)MAX_DIST : NIL;
30 register uch *strend = window + strstart + MAX_MATCH;
31 register uch scan_end = scan[best_len];
32 if (prev_length >= good_match) {
35 if (match[best_len] != scan_end ||
36 *++match != scan[1]) continue;
38 } while (*++scan == *++match && *++scan == *++match &&
40 len = MAX_MATCH - (int)(strend - scan);
43 if (len >= nice_match) break;
45 } while ((cur_match = prev[cur_match & WMASK]) > limit
46 && --chain_length != 0);
50 /* { dg-final { scan-tree-dump-times "number of SCoPs: 0" 1 "graphite"} } */
51 /* { dg-final { cleanup-tree-dump "graphite" } } */