Merge -r 127928:132243 from trunk
[official-gcc.git] / gcc / testsuite / gcc.c-torture / compile / 920501-4.c
blob3481deefedb3ef6f5ad7d4f660598a46dab3bac7
1 /* This test fails on HC11/HC12 when it is compiled without -mshort because
2 the 'r0' array is too large. Force to use 16-bit ints for it. */
3 /* { dg-do assemble } */
4 /* { dg-xfail-if "" { m6811-*-* m6812-*-* } { "*" } { "-mshort" } } */
6 foo ()
8 int r0[8186 ];
9 int r1[2 ];
10 int r2[2 ];
11 int bitm0[2 ];
12 int bitm1[2 ];
13 int bitm2[2 ];
15 int i,j,k,m,n,m_max;
16 int f;
17 double fm,ft;
19 while (1) {
21 if (m%4 == 2)
22 ++m;
24 if (m_max != 0 && m > m_max)
25 break;
27 fm=m;
29 r0[k=1]=0;
30 bitm0[0] = 0;
32 while ( n%f == 0 ) {
33 while ( (ft != 0) && (ft < fm )) {
34 bitm1[i] = 0;
35 r1[i]=0;
38 while ( r0[i] != 0 && r1[i] != 0 ) {
39 if ( r0[i] < r1[i] ) {
40 bitm2[k] = bitm0[i];
41 r2[k++]=0;
43 else if ( r0[i] > r1[j] ) {
44 bitm2[k] = bitm1[j];
45 r2[k++]=r1[j++];
47 else {
48 bitm1[k] = bitm0[i];
49 r2[k++]=r0[i++];