Package: g++-10 Version: 10.2.0-16 Severity: normal Tags: upstream Dear Maintainer,
* What led up to the situation? Compiling the following code crashes g++-10: // g++-10 -std=c++2a -o /tmp/example.cpp.o -c example.cpp enum class MyEnumClass { A }; struct MyClass { MyEnumClass foobar : 8 { MyEnumClass::A }; }; bool some_function(MyClass x) { switch (x.foobar) { case MyEnumClass::A: return false; } } See at the bottom the exact invocation, error messages, and g++ version. This bug is a regression: g++-9 does *not* crash when compiling the above code. * What exactly did you do (or not do) that was effective (or ineffective)? The enum-class, bit-packing, seemingly incomplete switch-case, non-constant switch-argument, all seem to be necessary to trigger the bug. * What was the outcome of this action? Compiler crash (error message see below) * What outcome did you expect instead? Either a successful compilation, or a compilation error; but not a compiler crash. Full error message and versions: $ /usr/bin/g++-10 -std=c++2a -o /tmp/example.cpp.o -c example.cpp example.cpp: In function ‘bool some_function(MyClass)’: example.cpp:6:6: error: type precision mismatch in switch statement 6 | bool some_function(MyClass x) | ^~~~~~~~~~~~~ switch (_1) <default: <D.2095>, case 0: <D.2092>> example.cpp:6:6: internal compiler error: ‘verify_gimple’ failed 0x128422d verify_gimple_in_seq(gimple*) ../../src/gcc/tree-cfg.c:5144 0xf85436 gimplify_body(tree_node*, bool) ../../src/gcc/gimplify.c:14888 0xf856a3 gimplify_function_tree(tree_node*) ../../src/gcc/gimplify.c:14978 0xdbbe27 cgraph_node::analyze() ../../src/gcc/cgraphunit.c:670 0xdbee27 analyze_functions ../../src/gcc/cgraphunit.c:1227 0xdbf9f2 symbol_table::finalize_compilation_unit() ../../src/gcc/cgraphunit.c:2986 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <file:///usr/share/doc/gcc-10/README.Bugs> for instructions. $ /usr/bin/g++-10 --version g++-10 (Debian 10.2.0-16) 10.2.0 Copyright (C) 2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ /usr/bin/g++-9 -std=c++2a -o /tmp/example.cpp.o -c example.cpp example.cpp: In function ‘bool some_function(MyClass)’: example.cpp:12:1: warning: control reaches end of non-void function [-Wreturn- type] 12 | } | ^ $ /usr/bin/g++-9 --version g++-9 (Debian 9.3.0-18) 9.3.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ uname -a Linux home 5.8.0-1-amd64 #1 SMP Debian 5.8.7-1 (2020-09-05) x86_64 GNU/Linux -- System Information: Debian Release: bullseye/sid APT prefers stable-updates APT policy: (500, 'stable-updates'), (500, 'unstable'), (500, 'testing'), (500, 'stable') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 5.8.0-1-amd64 (SMP w/4 CPU threads) Locale: LANG=de_DE.utf8, LC_CTYPE=de_DE.utf8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages g++-10 depends on: ii gcc-10 10.2.0-16 ii gcc-10-base 10.2.0-16 ii libc6 2.31-4 ii libgmp10 2:6.2.0+dfsg-6 ii libisl22 0.22.1-1 ii libmpc3 1.2.0-1 ii libmpfr6 4.1.0-3 ii libstdc++-10-dev 10.2.0-16 ii libzstd1 1.4.5+dfsg-4 ii zlib1g 1:1.2.11.dfsg-2 g++-10 recommends no packages. Versions of packages g++-10 suggests: pn g++-10-multilib <none> pn gcc-10-doc <none> -- no debconf information