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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.dg/] [torture/] [pr50287.c] - Blame information for rev 801

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

Line No. Rev Author Line
1 689 jeremybenn
/* { dg-do compile } */
2
 
3
struct PMC {
4
    unsigned flags;
5
};
6
 
7
struct PVC {
8
  unsigned flags, other_stuff;
9
};
10
 
11
 
12
typedef struct Pcc_cell
13
{
14
    struct PMC *p;
15
    long bla;
16
    long type;
17
} Pcc_cell;
18
 
19
int gi;
20
int cond;
21
 
22
struct PVC g_pvc;
23
 
24
extern void abort ();
25
extern void never_ever(int interp, struct PMC *pmc)
26
  __attribute__((noinline,noclone));
27
 
28
void never_ever (int interp, struct PMC *pmc)
29
{
30
  abort ();
31
}
32
 
33
static void mark_cell(int * interp, Pcc_cell *c, struct PVC pvc)
34
  __attribute__((__nonnull__(1)));
35
 
36
static void
37
mark_cell(int * interp, Pcc_cell *c, struct PVC pvc)
38
{
39
  if (!cond)
40
    return;
41
 
42
  if (c && c->type == 4 && c->p
43
      && !(c->p->flags & (1<<8)))
44
    never_ever(gi + 1, c->p);
45
  if (c && c->type == 4 && c->p
46
      && !(c->p->flags & (1<<7)))
47
    never_ever(gi + 2, c->p);
48
  if (c && c->type == 4 && c->p
49
      && !(c->p->flags & (1<<6)))
50
    never_ever(gi + 3, c->p);
51
  if (c && c->type == 4 && c->p
52
      && !(c->p->flags & (1<<5)))
53
    never_ever(gi + 4, c->p);
54
  if (c && c->type == 4 && c->p
55
      && !(c->p->flags & (1<<4)))
56
    never_ever(gi + 5, c->p);
57
  if (c && c->type == 4 && c->p
58
      && !(c->p->flags & (1<<3)))
59
    never_ever(gi + 6, c->p);
60
  if (c && c->type == 4 && c->p
61
      && !(c->p->flags & (1<<2)))
62
    never_ever(gi + 7, c->p);
63
  if (c && c->type == 4 && c->p
64
      && !(c->p->flags & (1<<1)))
65
    never_ever(gi + 8, c->p);
66
  if (c && c->type == 4 && c->p
67
      && !(c->p->flags & (1<<9)))
68
    never_ever(gi + 9, c->p);
69
}
70
 
71
static void
72
foo(int * interp, Pcc_cell *c)
73
{
74
  mark_cell(interp, c, g_pvc);
75
}
76
 
77
static struct Pcc_cell *
78
__attribute__((noinline,noclone))
79
getnull(void)
80
{
81
  return (struct Pcc_cell *) 0;
82
}
83
 
84
 
85
int main()
86
{
87
  int i;
88
 
89
  cond = 1;
90
  for (i = 0; i < 100; i++)
91
    foo (&gi, getnull ());
92
  return 0;
93
}
94
 
95
 
96
void
97
bar_1 (int * interp, Pcc_cell *c)
98
{
99
  c->bla += 1;
100
  mark_cell(interp, c, g_pvc);
101
}
102
 
103
void
104
bar_2 (int * interp, Pcc_cell *c, struct PVC pvc)
105
{
106
  c->bla += 2;
107
  mark_cell(interp, c, pvc);
108
}
109
 

powered by: WebSVN 2.1.0

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