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

            Bug ID: 77786
           Summary: internal compiler error: in tsubst_copy, at
                    cp/pt.c:13040
           Product: gcc
           Version: 5.4.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: matthias.thul at gmail dot com
  Target Milestone: ---

Created attachment 39720
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=39720&action=edit
compiler output

The below code fails with the the internal compiler error "in tsubst_copy, at
cp/pt.c:13040" in 5.4.1. The code compiles successfully with 4.9.4 and 6.2.0 as
well as Clang 3.8.0.

When removing the template parameter from foo, the internal compiler error
changes to "Segmentation fault".

When checking whether this was a duplicate of 70343, I changed the capture of
the lambda bar from [&] to [] and the internal compiler error still occurs
(though the code is not valid any longer).

========== code ==========

#include <vector>

template<int N>
void foo(std::vector<int> a) {
    auto const a_size = a.size();

    auto bar = [&](auto y) -> void {
        int a_size_2 = a_size;
    };

    double x = 0.0;
    bar(x);
}

int main() {
    std::vector<int> a(1);
    foo<1>(a);
}

========== output of gcc -v ==========

Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu
5.4.1-2ubuntu1~16.04' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs
--enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-5 --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu
--enable-libstdcxx-debug --enable-libstdcxx-time=yes
--with-default-libstdcxx-abi=new --enable-gnu-unique-object
--disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib
--disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo
--with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home
--with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64
--with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
--enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686
--with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib
--with-tune=generic --enable-checking=release --build=x86_64-linux-gnu
--host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 5.4.1 20160904 (Ubuntu 5.4.1-2ubuntu1~16.04) 

========== complete command line that triggers the bug ==========

g++ -std=c++14 main.cpp -o main

Reply via email to