projects
/
gcc.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
history
|
raw
|
HEAD
re PR middle-end/13146 (inheritance for nonoverlapping_component_refs_p)
[gcc.git]
/
gcc
/
testsuite
/
g++.dg
/
tree-ssa
/
pr13146.C
1
/* { dg-do link } */
2
/* { dg-options "-O -fstrict-aliasing" } */
3
4
class first
5
{
6
public:
7
double d;
8
int f1;
9
};
10
11
class middle : public first
12
{
13
};
14
15
class second : public middle
16
{
17
public:
18
int f2;
19
short a;
20
};
21
22
class third
23
{
24
public:
25
char a;
26
char b;
27
};
28
29
class multi: public third, public second
30
{
31
public:
32
short s;
33
char f3;
34
};
35
36
extern void link_error ();
37
38
void
39
foo (first *s1, second *s2)
40
{
41
s1->f1 = 0;
42
s2->f2 = 0;
43
s1->f1++;
44
s2->f2++;
45
s1->f1++;
46
s2->f2++;
47
if (s1->f1 != 2)
48
link_error ();
49
}
50
51
void
52
bar (first *s1, multi *s3)
53
{
54
s1->f1 = 0;
55
s3->f3 = 0;
56
s1->f1++;
57
s3->f3++;
58
s1->f1++;
59
s3->f3++;
60
if (s1->f1 != 2)
61
link_error ();
62
}
63
64
65
int
66
main()
67
{
68
first a;
69
second b;
70
multi c;
71
foo (&a, &b);
72
bar (&a, &c);
73
return 0;
74
}