| // { dg-do compile } |
| // { dg-options "-O -fpartial-inlining -flto -fconserve-stack -fcompare-debug" } |
| // { dg-require-effective-target lto } |
| // { dg-xfail-if "AIX compare debug" { powerpc-ibm-aix* } } |
| |
| void end (int, int) __attribute__ ((__noreturn__)); |
| |
| struct S |
| { |
| int i; |
| S *s; |
| }; |
| |
| inline bool f (S *s) |
| { |
| if (!s->s) |
| end (0, 0); |
| return s->s == s; |
| } |
| |
| inline bool |
| baz (S s1, S) |
| { |
| while (f (&s1)); |
| |
| return true; |
| } |
| |
| inline bool |
| bar (S s1, S s2, S) |
| { |
| return baz (s1, s2); |
| } |
| |
| S getS (); |
| |
| bool |
| foo () |
| { |
| return bar (getS (), getS (), getS ()); |
| } |