https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125358
Bug ID: 125358
Summary: internal compiler error: in
diagnose_template_names_tu_local, at
cp/module.cc:15961
Product: gcc
Version: 17.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: leander.schulten at tetys dot de
Target Milestone: ---
See https://godbolt.org/z/bPr58Pvaz
When instantiating a template that references a TU local definition we get an
error. This was described in the last block of
https://gcc.gnu.org/pipermail/gcc-patches/2025-October/699370.html, but it
seems that an edge case was missed.
header env.hpp:
#pragma once
namespace env
{
// must be static
static void parse_bool()
{
}
struct prefix
{
void register_variable()
{
parse_bool();
}
};
} // namespace env
module file:
module;
#include <env.hpp>
export module runtimeCore;
export {
template <typename VarType>
struct EnvironmentVariableBase
{
EnvironmentVariableBase(){
env::prefix{}.register_variable();
}
};
}
Resulting error:
[1/4] /opt/compiler-explorer/gcc-snapshot/bin/g++ -I/app/.
-fdiagnostics-color=always -O2 -g -DNDEBUG -std=gnu++23 -Wall -Wextra -E -x c++
/app/environment.cpp -MT CMakeFiles/test_target.dir/environment.cpp.o.ddi -MD
-MF CMakeFiles/test_target.dir/environment.cpp.o.ddi.d -fmodules-ts
-fdeps-file=CMakeFiles/test_target.dir/environment.cpp.o.ddi
-fdeps-target=CMakeFiles/test_target.dir/environment.cpp.o
-fdeps-format=p1689r5 -o CMakeFiles/test_target.dir/environment.cpp.o.ddi.i
[2/4] /opt/compiler-explorer/cmake/bin/cmake -E cmake_ninja_dyndep
--tdi=CMakeFiles/test_target.dir/CXXDependInfo.json --lang=CXX --modmapfmt=gcc
--dd=CMakeFiles/test_target.dir/CXX.dd @CMakeFiles/test_target.dir/CXX.dd.rsp
[3/4] /opt/compiler-explorer/gcc-snapshot/bin/g++ -I/app/.
-fdiagnostics-color=always -O2 -g -DNDEBUG -std=gnu++23 -Wall -Wextra -MD -MT
CMakeFiles/test_target.dir/environment.cpp.o -MF
CMakeFiles/test_target.dir/environment.cpp.o.d -fmodules-ts
-fmodule-mapper=CMakeFiles/test_target.dir/environment.cpp.o.modmap -MD
-fdeps-format=p1689r5 -x c++ -o CMakeFiles/test_target.dir/environment.cpp.o -c
/app/environment.cpp
FAILED: CMakeFiles/test_target.dir/environment.cpp.o
CMakeFiles/test_target.dir/runtimeCore.gcm
/opt/compiler-explorer/gcc-snapshot/bin/g++ -I/app/.
-fdiagnostics-color=always -O2 -g -DNDEBUG -std=gnu++23 -Wall -Wextra -MD -MT
CMakeFiles/test_target.dir/environment.cpp.o -MF
CMakeFiles/test_target.dir/environment.cpp.o.d -fmodules-ts
-fmodule-mapper=CMakeFiles/test_target.dir/environment.cpp.o.modmap -MD
-fdeps-format=p1689r5 -x c++ -o CMakeFiles/test_target.dir/environment.cpp.o -c
/app/environment.cpp
environment.cpp:5:8: internal compiler error: in
diagnose_template_names_tu_local, at cp/module.cc:15961
5 | export module runtimeCore;
| ^~~~~~
0x29dd0f8 diagnostics::context::diagnostic_impl(rich_location*,
diagnostics::metadata const*, diagnostics::option_id, char const*,
__va_list_tag (*) [1], diagnostics::kind)
???:0
0x29d1d3b internal_error(char const*, ...)
???:0
0xb2f9ca fancy_abort(char const*, int, char const*)
???:0
0xcb99dd depset::hash::finalize_dependencies()
???:0
0xcdcccb module_state::write_begin(elf_out*, cpp_reader*, module_state_config&,
unsigned int&)
???:0
0xcde804 finish_module_processing(cpp_reader*)
???:0
0xc55400 c_parse_final_cleanups()
???:0
0xf11748 c_common_parse_file()
???:0
/cefs/e8/e878d2b0bf2a2ce12e5e0146_gcc-trunk-20260517/bin/../libexec/gcc/x86_64-linux-gnu/17.0.0/cc1plus
-quiet -I /app/. -imultiarch x86_64-linux-gnu -iprefix
/cefs/e8/e878d2b0bf2a2ce12e5e0146_gcc-trunk-20260517/bin/../lib/gcc/x86_64-linux-gnu/17.0.0/
-MD CMakeFiles/test_target.dir/environment.cpp.d -MF
CMakeFiles/test_target.dir/environment.cpp.o.d -MT
CMakeFiles/test_target.dir/environment.cpp.o -D_GNU_SOURCE -D NDEBUG
/app/environment.cpp -fdeps-file=CMakeFiles/test_target.dir/environment.cpp.ddi
-fdeps-target=CMakeFiles/test_target.dir/environment.cpp.o -quiet -dumpdir
CMakeFiles/test_target.dir/ -dumpbase environment.cpp.cpp -dumpbase-ext .cpp
-mtune=generic -march=x86-64 -g -O2 -Wall -Wextra -std=gnu++23
-fdiagnostics-color=always -fmodules
-fmodule-mapper=CMakeFiles/test_target.dir/environment.cpp.o.modmap
-fdeps-format=p1689r5 -o /tmp/ccGpGr6u.s
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.