Public bug reported: We have a template class that we are using with placement new. Code works fine in g++ (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4, however in g++ (Ubuntu 5.3.1-14ubuntu2) 5.3.1 20160413, the destructor call is optimized out, even though we explicitly call it.
I have attached sample code (reduced down from our project) to show the issue. If we add a NON-POD data type, everything works fine... this however is not an option for our project, as in our environment this is normally a packed class, though the example fails either way. This works: g++ -O0 -g -ggdb test.cpp -o test0 ./test0 Before:000102030405060708090a0b0c0d0e0f10111213 After :0000000000000000000000000000000000000000 These do not: g++ -O1 -g -ggdb test.cpp -o test1 g++ -O2 -g -ggdb test.cpp -o test2 g++ -O3 -g -ggdb test.cpp -o test3 ./test1 Before:000102030405060708090a0b0c0d0e0f10111213 After :000102030405060708090a0b0c0d0e0f10111213 ** Affects: gcc-5 (Ubuntu) Importance: Undecided Status: New ** Tags: xenial ** Attachment added: "test.cpp" https://bugs.launchpad.net/bugs/1577891/+attachment/4654728/+files/test.cpp -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1577891 Title: Placement new destructor call optimized out To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/gcc-5/+bug/1577891/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs