| // { dg-lto-do assemble } |
| extern void some_function (const char *); |
| extern bool some_other_function (); |
| |
| struct Foo |
| { |
| long long a; |
| int b; |
| }; |
| |
| bool Foo_eq(Foo x, Foo y) |
| { |
| return x.a == y.a && x.b == y.b; |
| } |
| |
| struct Bar |
| { |
| Foo a; |
| int b; |
| }; |
| |
| struct Baz |
| { |
| Bar a; |
| Baz(Bar &a):a(a) { } |
| }; |
| |
| #pragma GCC diagnostic ignored "-Wreturn-type" |
| struct Zonk |
| { |
| Baz baz; |
| |
| Bar func_1(const Bar & bar) { |
| if (Foo_eq(bar.a, baz.a.a) && bar.b == baz.a.b || some_other_function ()) |
| return bar; |
| } |
| |
| void func_2(const Baz & baz) { |
| func_1(baz.a); |
| some_function(__PRETTY_FUNCTION__); |
| } |
| }; |
| |
| void func() { |
| Bar bar; |
| Zonk *rep; |
| rep->func_1(bar); |
| rep->func_2(Baz(bar)); |
| } |
| |
| void foo () |
| { |
| func(); |
| } |