1 /* { dg-options "-O2 -fgraphite -fdump-tree-graphite-all" } */
3 # define EXTERN(type, array) extern type array[]
4 typedef unsigned char uch;
5 typedef unsigned short ush;
13 #define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
14 #define MAX_DIST (WSIZE-MIN_LOOKAHEAD)
16 typedef unsigned IPos;
17 unsigned near max_chain_length;
18 extern unsigned near strstart;
19 unsigned int near prev_length;
21 unsigned near good_match;
23 #define WMASK (WSIZE-1)
24 int longest_match(IPos cur_match)
26 unsigned chain_length = max_chain_length;
27 register uch *scan = window + strstart;
30 int best_len = prev_length;
31 IPos limit = strstart > (IPos)MAX_DIST ? strstart - (IPos)MAX_DIST : NIL;
32 register uch *strend = window + strstart + MAX_MATCH;
33 register uch scan_end = scan[best_len];
34 if (prev_length >= good_match) {
37 if (match[best_len] != scan_end ||
38 *++match != scan[1]) continue;
40 } while (*++scan == *++match && *++scan == *++match &&
42 len = MAX_MATCH - (int)(strend - scan);
45 if (len >= nice_match) break;
47 } while ((cur_match = prev[cur_match & WMASK]) > limit
48 && --chain_length != 0);
52 /* { dg-final { scan-tree-dump-times "number of SCoPs: 0" 1 "graphite"} } */
53 /* { dg-final { cleanup-tree-dump "graphite" } } */