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

            Bug ID: 121865
           Summary: ICE with modules and LTO (expected template_decl, have
                    overload in maybe_template_info, at cp/mangle.cc:311)
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code, lto
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: sjames at gcc dot gnu.org
            Blocks: 103524
  Target Milestone: ---

A user reported this in Gentoo w/ 15 but reproduces on trunk. Without checking,
it segfaults.

```
$ ./test.sh
+ set -e
+ g++ -std=c++23 -flto=auto -fmodules-ts logger.ii -c
+ g++ -std=c++23 -flto=auto -fmodules-ts utils.ii -c
+ g++ -std=c++23 -flto=auto -fmodules-ts event.ii -c
+ g++ -std=c++23 -flto=auto -fmodules-ts semaphore.ii -c
+ g++ -std=c++23 -flto=auto -fmodules-ts engine.ii -c
+ g++ -std=c++23 -flto=auto -fmodules-ts timer.ii -c
+ g++ -std=c++23 -flto=auto -fmodules-ts evdev.ii -c
+ g++ -std=c++23 -flto=auto -fmodules-ts evinputdev.ii -c
+ g++ -std=c++23 -flto=auto -fmodules-ts kbdinputdev.ii -c
+ g++ -std=c++23 -flto=auto -fmodules-ts mouseinputdev.ii -c
+ g++ -std=c++23 -flto=auto -fmodules-ts socket.ii -c
+ g++ -std=c++23 -flto=auto -fmodules-ts udpsocket.ii -c
+ g++ -std=c++23 -flto=auto -fmodules-ts mxremote.ii -c
+ g++ -std=c++23 -flto=auto -fmodules-ts mxsrv.ii -c
+ g++ -std=c++23 -flto=auto -fmodules-ts router.cppm.ii -c
during IPA pass: *free_lang_data
In file included from
/usr/lib/gcc/x86_64-pc-linux-gnu/16/include/g++-v16/ios:47,
                 from
/usr/lib/gcc/x86_64-pc-linux-gnu/16/include/g++-v16/istream:42,
                 from
/usr/lib/gcc/x86_64-pc-linux-gnu/16/include/g++-v16/sstream:42,
                 from
/usr/lib/gcc/x86_64-pc-linux-gnu/16/include/g++-v16/chrono:61,
                 from /home/sam/bugs/gentoo-962558/mxev/src/logger.cppm:5,
of module logger, imported at
/home/sam/bugs/gentoo-962558/mxev/src/router.cppm:17:
/usr/lib/gcc/x86_64-pc-linux-gnu/16/include/g++-v16/streambuf:154:7: internal
compiler error: tree check: expected template_decl, have overload in
maybe_template_info, at cp/mangle.cc:311
  154 |       __copy_streambufs_eof<>(basic_streambuf*, basic_streambuf*,
bool&);
      |       ^~~~~~~~~~~~~~~~~~~~~~~
0x55e5de3e5e1a internal_error(char const*, ...)
       
/usr/src/debug/sys-devel/gcc-16.0.9999/gcc-16.0.9999/gcc/diagnostic-global-context.cc:786
0x55e5ddcc2fa0 tree_check_failed(tree_node const*, char const*, int, char
const*, ...)
        /usr/src/debug/sys-devel/gcc-16.0.9999/gcc-16.0.9999/gcc/tree.cc:9184
0x55e5dc8d64a0 tree_check(tree_node*, char const*, int, char const*, tree_code)
        /usr/src/debug/sys-devel/gcc-16.0.9999/gcc-16.0.9999/gcc/tree.h:3733
0x55e5dc8d64a0 maybe_template_info
       
/usr/src/debug/sys-devel/gcc-16.0.9999/gcc-16.0.9999/gcc/cp/mangle.cc:311
0x55e5de578c68 mangle_return_type_p(tree_node*)
       
/usr/src/debug/sys-devel/gcc-16.0.9999/gcc-16.0.9999/gcc/cp/mangle.cc:853
0x55e5de5789a7 check_abi_tags(tree_node*)
       
/usr/src/debug/sys-devel/gcc-16.0.9999/gcc-16.0.9999/gcc/cp/class.cc:1941
0x55e5de576130 write_mangled_name
       
/usr/src/debug/sys-devel/gcc-16.0.9999/gcc-16.0.9999/gcc/cp/mangle.cc:801
0x55e5de576130 mangle_decl_string
       
/usr/src/debug/sys-devel/gcc-16.0.9999/gcc-16.0.9999/gcc/cp/mangle.cc:4534
0x55e5de573e8a get_mangled_id
       
/usr/src/debug/sys-devel/gcc-16.0.9999/gcc-16.0.9999/gcc/cp/mangle.cc:4550
0x55e5de573e8a mangle_decl(tree_node*)
       
/usr/src/debug/sys-devel/gcc-16.0.9999/gcc-16.0.9999/gcc/cp/mangle.cc:4588
0x55e5de4df085 decl_assembler_name(tree_node*)
        /usr/src/debug/sys-devel/gcc-16.0.9999/gcc-16.0.9999/gcc/tree.cc:851
0x55e5dcac3963 assign_assembler_name_if_needed(tree_node*)
        /usr/src/debug/sys-devel/gcc-16.0.9999/gcc-16.0.9999/gcc/tree.cc:967
0x55e5dcac3963 assign_assembler_name_if_needed(tree_node*)
        /usr/src/debug/sys-devel/gcc-16.0.9999/gcc-16.0.9999/gcc/tree.cc:949
0x55e5dcac3963 free_lang_data_in_cgraph
       
/usr/src/debug/sys-devel/gcc-16.0.9999/gcc-16.0.9999/gcc/ipa-free-lang-data.cc:1082
0x55e5dcac3963 free_lang_data
       
/usr/src/debug/sys-devel/gcc-16.0.9999/gcc-16.0.9999/gcc/ipa-free-lang-data.cc:1127
0x55e5dcac3963 execute
       
/usr/src/debug/sys-devel/gcc-16.0.9999/gcc-16.0.9999/gcc/ipa-free-lang-data.cc:1194
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://bugs.gentoo.org/> for instructions.
```

```
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/16/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-pc-linux-gnu
Configured with:
/var/tmp/portage/sys-devel/gcc-16.0.9999/work/gcc-16.0.9999/configure
--host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr
--bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/16
--includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/16/include
--datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/16
--mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/16/man
--infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/16/info
--with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/16/include/g++-v16
--disable-silent-rules --disable-dependency-tracking
--with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/16/python
--enable-libphobos --enable-objc-gc
--enable-languages=c,c++,d,objc,obj-c++,fortran,ada,rust --enable-obsolete
--enable-secureplt --disable-werror --with-system-zlib --enable-nls
--without-included-gettext --disable-libunwind-exceptions
--enable-checking=yes,extra,rtl,df --with-bugurl=https://bugs.gentoo.org/
--with-pkgversion='Gentoo 16.0.9999 p, commit
9321ede0c5e71b623e63e7c5595afd85c0ea6d75' --with-gcc-major-version-only
--enable-libstdcxx-time --enable-lto --disable-libstdcxx-pch --enable-shared
--enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
--enable-multilib --with-multilib-list=m32,m64 --disable-fixed-point
--enable-targets=all --enable-offload-defaulted
--enable-offload-targets=nvptx-none --enable-libgomp --disable-libssp
--enable-libada --enable-cet --disable-systemtap --enable-valgrind-annotations
--disable-vtable-verify --disable-libvtv --with-zstd --without-isl
--enable-default-pie --enable-host-pie --enable-host-bind-now
--enable-default-ssp --disable-fixincludes
--with-gxx-libcxx-include-dir=/usr/include/c++/v1
--with-build-config='bootstrap-lto bootstrap-cet'
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 16.0.0 20250907 (experimental)
93af5f69d15934edda4ff6a6eb63bde9ae7b8e45 (Gentoo 16.0.9999 p, commit
9321ede0c5e71b623e63e7c5595afd85c0ea6d75)
```


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103524
[Bug 103524] [meta-bug] modules issue

Reply via email to