(root)/
gcc-13.2.0/
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;
       4  EXTERN(uch, window);
       5  EXTERN(ush, prev);
       6  #ifndef WSIZE
       7  #  define WSIZE 0x8000
       8  #endif                
       9  #define MIN_MATCH  3
      10  #define MAX_MATCH  258
      11  #define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
      12  #define MAX_DIST  (WSIZE-MIN_LOOKAHEAD)
      13  #define near
      14  typedef unsigned IPos;
      15  unsigned near max_chain_length;
      16  extern unsigned near strstart;
      17  unsigned int near prev_length;
      18  #define NIL 0
      19  unsigned near good_match;
      20  int near nice_match;
      21  #define WMASK     (WSIZE-1)
      22  int longest_match(IPos cur_match)
      23  {
      24      unsigned chain_length = max_chain_length;
      25      register uch *scan = window + strstart;  
      26      register uch *match;                     
      27      register int len;                        
      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) {
      33      }
      34      do {
      35          if (match[best_len]   != scan_end  ||
      36              *++match          != scan[1])      continue;
      37          do {
      38          } while (*++scan == *++match && *++scan == *++match &&
      39                   scan < strend);
      40          len = MAX_MATCH - (int)(strend - scan);
      41          if (len > best_len) {
      42              best_len = len;
      43              if (len >= nice_match) break;
      44          }
      45      } while ((cur_match = prev[cur_match & WMASK]) > limit
      46  	     && --chain_length != 0);
      47      return best_len;
      48  }
      49  
      50  /* { dg-final { scan-tree-dump-times "number of SCoPs: 0" 1 "graphite"} } */