/* { dg-do run } */ | |
/* { dg-options "-fipa-pta" } */ | |
/* { dg-additional-sources "pr43879-1_0.C" } */ | |
struct A { | |
int *i; | |
A(); | |
~A(); | |
}; | |
static inline int | |
aa(int *a, int *b) | |
{ | |
(void)b; | |
return *a; | |
} | |
struct B { | |
B() : i(0) {} | |
int i; | |
B(const A &a) : i(0) | |
{ | |
f(*a.i); | |
} | |
void __attribute__((noinline, noclone)) | |
f(int j) | |
{ | |
aa(&i, &j); | |
i = 1; | |
} | |
}; | |
int | |
test() | |
{ | |
B b1; | |
B b2 = B(A()); | |
b1 = B(A()); | |
if (b1.i != b2.i) __builtin_abort(); | |
return 0; | |
} | |
int | |
main() | |
{ | |
return test(); | |
} | |