]>
git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.dg/graphite/scop-15.c
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" } } */