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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.dg/] [anon-struct-12.c] - Blame information for rev 698

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

Line No. Rev Author Line
1 689 jeremybenn
/* { dg-do run } */
2
/* { dg-options "-fplan9-extensions" } */
3
 
4
/* When using -fplan9-extensions, we support automatic conversion of
5
   pointer types, and we support referring to a typedef name
6
   directly.  */
7
 
8
extern void exit (int);
9
extern void abort (void);
10
 
11
struct A { char a; };
12
 
13
struct B {
14
  char b;
15
  struct A;
16
  char c;
17
};
18
 
19
void
20
f1 (struct A *p)
21
{
22
  p->a = 1;
23
}
24
 
25
void
26
test1 (void)
27
{
28
  struct B b;
29
  struct A *p;
30
 
31
  b.b = 2;
32
  b.c = 3;
33
  f1 (&b);
34
  if (b.a != 1)
35
    abort ();
36
  if (b.b != 2 || b.c != 3)
37
    abort ();
38
  p = &b;
39
  if (p->a != 1)
40
    abort ();
41
}
42
 
43
typedef struct { char d; } D;
44
 
45
struct E {
46
  char b;
47
  struct F { char f; };
48
  char c;
49
  union {
50
    D;
51
  };
52
  char e;
53
};
54
 
55
void
56
f2 (struct F *p)
57
{
58
  p->f = 6;
59
}
60
 
61
void
62
f3 (D *p)
63
{
64
  p->d = 4;
65
}
66
 
67
void
68
f4 (D d)
69
{
70
}
71
 
72
void
73
test2 (void)
74
{
75
  struct E e;
76
  struct F *pf;
77
  D *pd;
78
  D d;
79
 
80
  e.b = 2;
81
  e.c = 3;
82
  e.e = 5;
83
  f2 (&e);
84
  f3 (&e);
85
  if (e.d != 4)
86
    abort ();
87
  if (e.f != 6)
88
    abort ();
89
  if (e.b != 2 || e.c != 3 || e.e != 5)
90
    abort ();
91
  pf = &e;
92
  if (pf->f != 6)
93
    abort ();
94
  pd = &e;
95
  if (pd->d != 4)
96
    abort ();
97
  d = e.D;
98
  f3 (&e.D);
99
  f4 (e.D);
100
}
101
 
102
int
103
main ()
104
{
105
  test1 ();
106
  test2 ();
107
  exit (0);
108
}

powered by: WebSVN 2.1.0

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