[Bug c++/21528] New: Boost shared_ptr_test.cpp fails with -O3

pdimov at gmail dot com gcc-bugzilla@gcc.gnu.org
Thu May 12 08:41:00 GMT 2005


The following portion of shared_ptr_test.cpp:

#include <boost/shared_ptr.hpp>
#include <boost/detail/lightweight_test.hpp>

int main()
{
    boost::shared_ptr<int> pi(new int);
    boost::shared_ptr<void> pv(pi);

    boost::shared_ptr<int> pi2 = boost::static_pointer_cast<int>(pv);
    BOOST_TEST(pi.get() == pi2.get());
    BOOST_TEST(!(pi < pi2 || pi2 < pi));
    BOOST_TEST(pi.use_count() == 3);
    BOOST_TEST(pv.use_count() == 3);
    BOOST_TEST(pi2.use_count() == 3);

    return boost::report_errors();
}

(using the current Boost CVS HEAD that will become 1.33 soon) fails the three
use_count() tests with g++ 4.0.0 -O3, but not with -O0, 1, 2. It seems that a
reference count increment is being optimized away. This does not happen if
BOOST_TEST is replaced with assert.

-- 
           Summary: Boost shared_ptr_test.cpp fails with -O3
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: pdimov at gmail dot com
                CC: gcc-bugs at gcc dot gnu dot org
GCC target triplet: i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21528



More information about the Gcc-bugs mailing list