/* The arrays are too large for the xstormy16 - won't fit in 16 bits. */ /* { dg-do assemble } */ /* { dg-require-effective-target size32plus } */ /* { dg-skip-if "Array too big" { "avr-*-*" } { "*" } { "" } } */ /* { dg-xfail-if "The array too big" { h8300-*-* } { "-mno-h" "-mn" } { "" } } */ unsigned char TIFFFax2DMode[20][256]; unsigned char TIFFFax2DNextState[20][256]; unsigned char TIFFFaxUncompAction[20][256]; unsigned char TIFFFaxUncompNextState[20][256]; unsigned char TIFFFax1DAction[230][256]; unsigned char TIFFFax1DNextState[230][256]; typedef struct tableentry { unsigned short length; unsigned short code; short runlen; } tableentry; extern tableentry TIFFFaxWhiteCodes[]; extern tableentry TIFFFaxBlackCodes[]; static short sp_data, sp_bit; static unsigned char fetchByte (inbuf) unsigned char **inbuf; { unsigned char byte = **inbuf; (*inbuf)++; return (byte); } static int decode_white_run (inbuf) unsigned char **inbuf; { short state = sp_bit; short action; int runlen = 0; for (;;) { if (sp_bit == 0) { nextbyte: sp_data = fetchByte (inbuf); } action = TIFFFax1DAction[state][sp_data]; state = TIFFFax1DNextState[state][sp_data]; if (action == 0 ) goto nextbyte; if (action == 1 ) return (-1 ); if (action == 210 ) return (-3 ); sp_bit = state; action = (TIFFFaxWhiteCodes[ action - 2 ].runlen) ; runlen += action; if (action < 64) return (runlen); } }