// { dg-do assemble } | |
// { dg-options "-O2" } | |
struct X {}; | |
struct Y | |
{ | |
Y(); | |
virtual ~Y(); | |
}; | |
struct Z | |
{ | |
int f (const int *x); | |
int g; | |
}; | |
inline int | |
operator<< (Z &os, int x) | |
{ | |
os.f (&x); | |
return os.g; | |
} | |
void foo (Z &a, X *b, X &c) | |
{ | |
X *d = b; | |
int e = 0; | |
Z &f = a; | |
if (!(f << e)) | |
do { do { } while (&c == 0); throw Y(); } while (0); | |
do { } while (&d == 0); | |
do { } while (&c == 0); | |
} |