https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71885
--- Comment #26 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
For future reference here is a nice, short example from Bernd Edlinger:
markus@x4 tmp % cat lifetime-dse.cpp
#include <assert.h>
#include <stdlib.h>
#include <string.h>
struct A {
A() {}
void *operator new(size_t s) {
void *ptr = malloc(s);
memset(ptr, 0xFF, s);
return ptr;
}
int value;
};
int main() {
A *a = new A;
assert(a->value == -1); /* Use of uninitialized value */
}
markus@x4 tmp % g++ -O2 -flifetime-dse=1 lifetime-dse.cpp
markus@x4 tmp % ./a.out
markus@x4 tmp % g++ -O2 -flifetime-dse=2 lifetime-dse.cpp
markus@x4 tmp % ./a.out
a.out: lifetime-dse.cpp:17: int main(): Assertion `a->value == -1' failed.
[1] 21394 abort ./a.out