OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.c-torture/] [compile/] [20011130-2.c] - Blame information for rev 801

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 688 jeremybenn
/* This testcase caused infinite loop in life info computation
2
   after if conversion on IA-64.  Conditional register dead for
3
   pseudo holding sign-extended k was improperly computed,
4
   resulting in this pseudo being live at start of bb if it was
5
   dead at the end and vice versa; as it was a bb which had edge
6
   to itself, this resulted in alternative propagating this basic
7
   block forever.  */
8
 
9
typedef struct {
10
  unsigned char a;
11
  unsigned char b;
12
} S0;
13
 
14
typedef struct {
15
  S0 *c;
16
  int d;
17
  unsigned int e;
18
  unsigned char *f[3];
19
  void *g;
20
} S1;
21
 
22
int bar (int, void *);
23
 
24
int foo (S1 *x, float y)
25
{
26
  S0 *h;
27
  int i, j, k, l, m;
28
  float n, o, p;
29
  unsigned char *q, *r[3];
30
 
31
  h = x->c;
32
  m = h->a;
33
  l = h->b;
34
  n = y;
35
  o = 0.0;
36
  if (x->d == 8)
37
    for (j = 0; j < x->e; j++)
38
      for (k = 0; k < 3; k++)
39
        {
40
          n = y;
41
          o = 0.0;
42
          if (m)
43
            q = x->f[k] + x->e - 1 - j;
44
          else
45
            q = x->f[k] + j;
46
          p = (*q - o) * y / (n - o);
47
          p = 0.0 > p ? 0.0 : p;
48
          p = y < p ? y : p;
49
          if (l)
50
            p = r[k][(int) p];
51
          bar (p, x->g);
52
        }
53
  return 1;
54
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.