[Bug c++/100827] New: Compiler crash with Boost.Bimap and Boost.Xpressive

pdimov at gmail dot com gcc-bugzilla@gcc.gnu.org
Sat May 29 15:21:15 GMT 2021


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100827

            Bug ID: 100827
           Summary: Compiler crash with Boost.Bimap and Boost.Xpressive
           Product: gcc
           Version: 11.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pdimov at gmail dot com
  Target Milestone: ---

I'm seeing a compiler crash with g++ 10/11 in -std=c++03 mode

https://godbolt.org/z/h4dY9oKGc
https://godbolt.org/z/o1P6nrhqG

when compiling one file from the Boost.Bimap test suite:

```
#include <boost/config.hpp>

#include <string>

#include <boost/bimap/bimap.hpp>

#include <boost/xpressive/xpressive.hpp>
#include <boost/xpressive/regex_actions.hpp>

using namespace boost::bimaps;
using namespace boost::xpressive;
namespace xp = boost::xpressive;

int main()
{
    //[ code_bimap_and_boost_xpressive

    typedef bimap< std::string, int > bm_type;
    bm_type bm;

    std::string rel_str("one <--> 1     two <--> 2      three <--> 3");

    sregex rel = ( (s1= +_w) >> " <--> " >> (s2= +_d) )
    [
        xp::ref(bm)->*insert( xp::construct<bm_type::value_type>(s1,
as<int>(s2)) )
    ];

    sregex relations = rel >> *(+_s >> rel);

    regex_match(rel_str, relations);

    assert( bm.size() == 3 );
    //]

    return 0;
}
```
(https://github.com/boostorg/bimap/blob/03bf1d222914d0c15563414f2e51b6a4ce0e0f69/example/bimap_and_boost/xpressive.cpp)

Trunk no longer has the issue, and neither do earlier versions or language
modes.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94938 looks related, but is
considered fixed in GCC 10.


More information about the Gcc-bugs mailing list