// { dg-do compile } | |
// { dg-options "-O -fpartial-inlining -flto -fconserve-stack -fcompare-debug" } | |
// { dg-require-effective-target lto } | |
// { dg-xfail-if "" { 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 ()); | |
} |