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

            Bug ID: 120406
           Summary: Modules ICE when including spdlog in Global Module
                    Fragment
           Product: gcc
           Version: 15.1.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: chrisi57001 at gmail dot com
  Target Milestone: ---

Code: 
module;
#include <spdlog/spdlog.h>

export module logging;

class Logger {
        spdlog::logger logger_{"Logger"};
};

CMake:
add_library(Logging)
target_sources(Logging
        PUBLIC
        FILE_SET CXX_MODULES
        BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/modules
        FILES     modules/logger.cppm
)
target_compile_features(Logging PUBLIC cxx_std_23)
target_link_libraries(Logging PUBLIC  spdlog::spdlog)
target_compile_options(Logging PUBLIC -freport-bug)

Output:
FAILED: CMakeFiles/Logging.dir/modules/logger.cppm.o
CMakeFiles/Logging.dir/logging.gcm 
/sbin/g++ -DSPDLOG_COMPILED_LIB -DSPDLOG_FMT_EXTERNAL -isystem
/home/chris/.vcpkg-clion/vcpkg/installed/x64-linux/include -g -std=gnu++23
-fdiagnostics-color=always -freport-bug -MD -MT
CMakeFiles/Logging.dir/modules/logger.cppm.o -MF
CMakeFiles/Logging.dir/modules/logger.cppm.o.d -fmodules-ts
-fmodule-mapper=CMakeFiles/Logging.dir/modules/logger.cppm.o.modmap -MD
-fdeps-format=p1689r5 -x c++ -o CMakeFiles/Logging.dir/modules/logger.cppm.o -c
/home/chris/cpp/vulkan-modules/modules/logger.cppm
/home/chris/cpp/vulkan-modules/modules/logger.cppm:5:8: internal compiler
error: in core_vals, at cp/module.cc:6641
    5 | export module logging;
      |        ^~~~~~
0x26d6c51 diagnostic_context::diagnostic_impl(rich_location*,
diagnostic_metadata const*, diagnostic_option_id, char const*, __va_list_tag
(*) [1], diagnostic_t)
        ???:0
0x2730d98 internal_error(char const*, ...)
        ???:0
0x7153c9 fancy_abort(char const*, int, char const*)
        ???:0
0x8583ea depset::hash::find_dependencies(module_state*)
        ???:0
0x8596e3 module_state::write_begin(elf_out*, cpp_reader*, module_state_config&,
unsigned int&)
        ???:0
0x86bb05 finish_module_processing(cpp_reader*)
        ???:0
0x7e989c c_parse_final_cleanups()
        ???:0
0xa1ea8a c_common_parse_file()
        ???:0
Please submit a full bug report, with preprocessed source.
Please include the complete backtrace with any bug report.
See <https://gitlab.archlinux.org/archlinux/packaging/packages/gcc/-/issues>
for instructions.
Preprocessed source stored into /tmp/ccws2Kfq.out file, please attach this to
your bugreport.
ninja: build stopped: subcommand failed.

>From what I can tell this ICE is extremely inconsistent. Earlier I could
compile this without any issues despite including more dependencies and even
importing std. After recompiling the file (because I accidentally added a
newline) I ran into the ICE again. I feel like the fickleness might be an issue
with how CMake handles modules (maybe because of compilation order or using
wrongly generated files) but it is an ICE nonetheless.

Reply via email to