Boost logo

Boost Users :

Subject: [Boost-users] bug in boost or in gcc-5.2.0 ?
From: renaud lepere (lepere.renaud_at_[hidden])
Date: 2015-09-28 10:23:01


I have a strange problem with mingw-w64, gcc-5.2.0 in 32bits on windows
in release. The following code leads to a crash (it is working in 64
bits and in debug). The adress of return in the stack seems to be
broken. I was not able to reduce it more than this, and in particular I
am not able to remove BOOST_CHECK_CLOSE (using BOOST_CHECK_EQUAL works).

This can be either a bug in gcc (false code generation) or something
else. How can I investigate ?

#define BOOST_TEST_MODULE MyTest
#include <boost/test/unit_test.hpp>
#include <iostream>

struct P
{
     P(double x_, double y_): x(x_), y(y_) {}
     double x;
     double y;
};

struct Seg
{
     Seg(const P & o_, const P & e_): o(o_), e(e_) {}
     P o;
     P e;
};

void f()
{
     auto Check = [](const Seg & s1, const Seg & s2,
                     bool expected_common_cut, double expected_length) {
         std::cerr << expected_length << std::endl;
         BOOST_CHECK_CLOSE(1e-3, 1e-4, .1);

     };
     Check(Seg(P(0, 0), P(100, 0)), Seg(P(0, 0), P(100, 0)), false, 0.0);
     Check(Seg(P(0, 0), P(100, 0)), Seg(P(100, 0), P(0, 0)), true, 100.0);
     std::cerr << "STILL LEAVING !" << std::endl;
}

void g()
{
     std::cerr << "BEFORE CRASH" << std::endl;
     f();
     std::cerr << "NEVER PRINTED" << std::endl;
}

BOOST_AUTO_TEST_CASE( my_test )
{
     g();
}


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net