https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118327
Bug ID: 118327 Summary: Internal compiler error in write_unnamed_type_enum in C++ Modules code Product: gcc Version: 14.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: bagishov.mikail at yandex dot ru Target Milestone: --- I have received following ICE / # cat /tmp/cciGMAdD.out // Target: x86_64-alpine-linux-musl // Configured with: /home/buildozer/aports/main/gcc/src/gcc-14.2.0/configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --build=x86_64-alpine-linux-musl --host=x86_64-alpine-linux-musl --target=x86_64-alpine-linux-musl --enable-checking=release --disable-cet --disable-fixed-point --disable-libstdcxx-pch --disable-multilib --disable-nls --disable-werror --disable-symvers --enable-__cxa_atexit --enable-default-pie --enable-default-ssp --enable-languages=c,c++,d,objc,go,fortran,ada --enable-link-serialization=2 --enable-linker-build-id --disable-libssp --disable-libsanitizer --enable-shared --enable-threads --enable-tls --with-bugurl=https://gitlab.alpinelinux.org/alpine/aports/-/issues --with-system-zlib --with-linker-hash-style=gnu --with-pkgversion='Alpine 14.2.0' // Thread model: posix // Supported LTO compression algorithms: zlib // gcc version 14.2.0 (Alpine 14.2.0) // // code.c:2:1: warning: global module fragment contents must be from preprocessor inclusion [-Wglobal-module] // 2 | template <typename T> void GetReferenceableValue(T); // | ^~~~~~~~ // code.c:2:28: warning: 'void GetReferenceableValue(T) [with T = <unnamed enum>]', declared using an unnamed type, is used but not defined [-Wc++20-extensions] // 2 | template <typename T> void GetReferenceableValue(T); // | ^~~~~~~~~~~~~~~~~~~~~ // code.c: In instantiation of 'void GetReferenceableValue(T) [with T = <unnamed enum>]': // code.c:2:28: internal compiler error: in write_unnamed_type_name, at cp/mangle.cc:1806 // 0x202bae9 internal_error(char const*, ...) // ???:0 // 0x72d447 fancy_abort(char const*, int, char const*) // ???:0 // 0x80dfd0 mangle_decl(tree_node*) // ???:0 // 0x11dee99 decl_assembler_name(tree_node*) // ???:0 // 0xa5d48d symbol_table::insert_to_assembler_name_hash(symtab_node*, bool) // ???:0 // 0xa751c2 symbol_table::finalize_compilation_unit() // ???:0 // Please submit a full bug report, with preprocessed source. // Please include the complete backtrace with any bug report. // See <https://gitlab.alpinelinux.org/alpine/aports/-/issues> for instructions. // /usr/libexec/gcc/x86_64-alpine-linux-musl/14.2.0/cc1plus -quiet -D_GNU_SOURCE code.c -quiet -dumpdir a- -dumpbase code.c -dumpbase-ext .c -mtune=generic -march=x86-64 -fmodules-ts -freport-bug -o - -frandom-seed=0 -fdump-noaddr # 0 "code.c" # 0 "<built-in>" # 0 "<command-line>" # 1 "/usr/include/stdc-predef.h" 1 3 4 # 0 "<command-line>" 2 # 1 "code.c" module ; template <typename T> void GetReferenceableValue(T); enum { kSooSizeMask }; void set_size() { GetReferenceableValue(kSooSizeMask); } Compiler was invoked as follows # gcc -x c++ code.c -fmodules-ts -freport-bug (Changing file extension or adding -std=c++20/-std=c++23 do not affect the error) The same code in Godbolt, if it is more convenient: https://godbolt.org/z/51oTb94z3 To be clear, I've received error given above when running GCC inside Docker container. When running it directly on my host (which is Ubuntu Linux 24.04) with -freport-bug enabled, I still receive the same error, but then GCC complains that bug is not reproducible and I should blame my PC instead: ... The bug is not reproducible, so it is likely a hardware or OS problem. Given that issue fully reproduces in other two combinations I've tried, I believe that this is a bug in GCC. As I see, generated report above already contains most of the relevant information, so I'll just add a few details. Compiler version on host: $ gcc-14 --version gcc-14 (Ubuntu 14.2.0-4ubuntu2~24.04) 14.2.0 Copyright (C) 2024 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. Alpine version (in container): # cat /etc/os-release NAME="Alpine Linux" ID=alpine VERSION_ID=3.21.1 PRETTY_NAME="Alpine Linux v3.21" HOME_URL="https://alpinelinux.org/" BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues" P.S. This is my first GCC issue, sorry if I did something wrong.