59 lines
537 B
C
59 lines
537 B
C
// { dg-do assemble }
|
|
|
|
struct A {
|
|
int a, b, c, d;
|
|
};
|
|
|
|
inline void foo (int, A &);
|
|
|
|
struct D {
|
|
};
|
|
|
|
struct E: public D {
|
|
void f (A &y)
|
|
{
|
|
foo (1, y);
|
|
}
|
|
};
|
|
|
|
struct F: public D {
|
|
void f (A &y)
|
|
{
|
|
foo (2, y);
|
|
}
|
|
};
|
|
|
|
E *d;
|
|
F *e;
|
|
|
|
inline int baz (int y)
|
|
{
|
|
A a;
|
|
if (y) {
|
|
d->f (a);
|
|
} else {
|
|
e->f (a);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
inline void foo (int y, A &z)
|
|
{
|
|
z.a = baz (y);
|
|
z.b = baz (y);
|
|
z.c = baz (y);
|
|
z.d = baz (y);
|
|
}
|
|
|
|
struct G {
|
|
E a;
|
|
F b;
|
|
void bar (A &);
|
|
};
|
|
|
|
void G::bar(A &y)
|
|
{
|
|
a.f(y);
|
|
b.f(y);
|
|
}
|