modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/compile/980506-1.c (about)

     1  /* The arrays are too large for the xstormy16 - won't fit in 16 bits. */
     2  /* { dg-do assemble } */
     3  /* { dg-require-effective-target size32plus } */
     4  /* { dg-skip-if "Array too big" { "avr-*-*" } } */ 
     5  /* { dg-xfail-if "The array too big" { h8300-*-* } { "-mno-h" "-mn" } { "" } } */
     6  
     7  unsigned char	TIFFFax2DMode[20][256];
     8  unsigned char	TIFFFax2DNextState[20][256];
     9  unsigned char	TIFFFaxUncompAction[20][256];
    10  unsigned char	TIFFFaxUncompNextState[20][256];
    11  unsigned char	TIFFFax1DAction[230][256];
    12  unsigned char	TIFFFax1DNextState[230][256];
    13  
    14  typedef struct tableentry {
    15      unsigned short length;
    16      unsigned short code;
    17      short       runlen;
    18  } tableentry;
    19  
    20  extern tableentry TIFFFaxWhiteCodes[];
    21  extern tableentry TIFFFaxBlackCodes[];
    22  
    23  static short sp_data, sp_bit;
    24  
    25  static unsigned char
    26  fetchByte (inbuf)
    27  
    28  unsigned char **inbuf;
    29  
    30  {
    31      unsigned char byte = **inbuf;
    32      (*inbuf)++;
    33      return (byte);
    34  }
    35  
    36  static int
    37  decode_white_run (inbuf)
    38  
    39  unsigned char **inbuf;
    40  
    41  {
    42      short state = sp_bit;
    43      short action;
    44      int runlen = 0;
    45  
    46      for (;;)
    47      {
    48  	if (sp_bit == 0)
    49  	{
    50  	nextbyte:
    51  	    sp_data = fetchByte (inbuf);
    52  	}
    53  
    54  	action = TIFFFax1DAction[state][sp_data];
    55  	state = TIFFFax1DNextState[state][sp_data];
    56  	if (action == 0 )
    57  	    goto nextbyte;
    58  	if (action == 1 )
    59  	    return (-1 );
    60  	if (action == 210 )
    61  	    return (-3 );
    62  	sp_bit = state;
    63  	action = (TIFFFaxWhiteCodes[ action - 2  ].runlen) ;
    64  	runlen += action;
    65  	if (action < 64)
    66  	    return (runlen);
    67      }
    68  }
    69