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