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

Reply via email to