OSDN Git Service

PR middle-end/34688
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.c-torture / compile / 980506-1.c
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-xfail-if "The array too big" { m6811-*-* m6812-*-* } { "*" } { "" } } /*
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