// { dg-do run } | |
// Bug: g++ re-evaluates the initializer for r before calling f(); since i has | |
// changed to an invalid index, this breaks. | |
class C | |
{ | |
public: | |
void f () { } | |
}; | |
void foo (C * objs[]) | |
{ | |
int i = 0; | |
C & r = * objs[i]; /* make reference to element */ | |
i = 666; | |
r.f (); /* core dumps here */ | |
} | |
int | |
main () | |
{ | |
C * objs[1] = { new C }; | |
foo (objs); | |
} |