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.

Reply via email to