35 lines
413 B
C
35 lines
413 B
C
// { 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);
|
|
}
|