summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/compile/920501-4.c
blob: 3481deefedb3ef6f5ad7d4f660598a46dab3bac7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/* This test fails on HC11/HC12 when it is compiled without -mshort because 
   the 'r0' array is too large.  Force to use 16-bit ints for it.  */
/* { dg-do assemble } */
/* { dg-xfail-if "" { m6811-*-* m6812-*-* } { "*" } { "-mshort" } } */

foo ()
{
  int r0[8186 ];
  int r1[2 ];
  int r2[2 ];
  int bitm0[2 ];
  int bitm1[2 ];
  int bitm2[2 ];

  int i,j,k,m,n,m_max;
  int f;
  double fm,ft;

  while (1) {

    if (m%4 == 2)
      ++m;

    if (m_max != 0 && m > m_max)
      break;

    fm=m;

    r0[k=1]=0;
    bitm0[0] = 0;

      while ( n%f == 0 ) {
	while ( (ft != 0) && (ft < fm )) {
	  bitm1[i] = 0;
	  r1[i]=0;
          }

	while ( r0[i] != 0 && r1[i] != 0 ) {
	  if ( r0[i] < r1[i] ) {
	    bitm2[k] = bitm0[i];
	    r2[k++]=0;
	  }
	  else if ( r0[i] > r1[j] ) {
	    bitm2[k] = bitm1[j];
	    r2[k++]=r1[j++];
	  }
	  else {
	    bitm1[k] = bitm0[i];
	    r2[k++]=r0[i++];
	  }
	}
      }
  }
}