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

            Bug ID: 125356
           Summary: failed to read compiled module cluster. Bad file data
           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: ---

I tried it with gcc trunc:
https://godbolt.org/z/W8r18fdbP

env.cpp:
```c++
#pragma once

namespace env
{
    // must be static inline
    static inline void parse_bool()
    {
        // without this the code compiles (must be an lambda)
        auto equal_case_insensitive = []() {};
    }

    struct prefix
    {
        void register_variable()
        {
            parse_bool();
        }
    };
}  // namespace env
```

environment.cpp:
```c++
module;

#include <env.hpp>

export module runtimeCore;

export {
    template <typename VarType>
    struct EnvironmentVariableBase
    {
        EnvironmentVariableBase(){
            env::prefix{}.register_variable();
        }
    };
}
```

paths.cpp:
```c++
module;

// this does not help
// #include <env.hpp>

export module test;

import runtimeCore;

struct PathEnvironment
{
    EnvironmentVariableBase<bool> loadConfig;
};

```

Output:
```
[1/6] /opt/compiler-explorer/gcc-snapshot/bin/g++  -I/app/.
-fdiagnostics-color=always -O2 -g -DNDEBUG -std=gnu++23 -E -x c++
/app/paths.cpp -MT CMakeFiles/test_target.dir/paths.cpp.o.ddi -MD -MF
CMakeFiles/test_target.dir/paths.cpp.o.ddi.d -fmodules-ts
-fdeps-file=CMakeFiles/test_target.dir/paths.cpp.o.ddi
-fdeps-target=CMakeFiles/test_target.dir/paths.cpp.o -fdeps-format=p1689r5 -o
CMakeFiles/test_target.dir/paths.cpp.o.ddi.i
[2/6] /opt/compiler-explorer/gcc-snapshot/bin/g++  -I/app/.
-fdiagnostics-color=always -O2 -g -DNDEBUG -std=gnu++23 -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
[3/6] /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
[4/6] /opt/compiler-explorer/gcc-snapshot/bin/g++  -I/app/.
-fdiagnostics-color=always -O2 -g -DNDEBUG -std=gnu++23 -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
[5/6] /opt/compiler-explorer/gcc-snapshot/bin/g++  -I/app/.
-fdiagnostics-color=always -O2 -g -DNDEBUG -std=gnu++23 -MD -MT
CMakeFiles/test_target.dir/paths.cpp.o -MF
CMakeFiles/test_target.dir/paths.cpp.o.d -fmodules-ts
-fmodule-mapper=CMakeFiles/test_target.dir/paths.cpp.o.modmap -MD
-fdeps-format=p1689r5 -x c++ -o CMakeFiles/test_target.dir/paths.cpp.o -c
/app/paths.cpp
FAILED: CMakeFiles/test_target.dir/paths.cpp.o
CMakeFiles/test_target.dir/test.gcm 
/opt/compiler-explorer/gcc-snapshot/bin/g++  -I/app/.
-fdiagnostics-color=always -O2 -g -DNDEBUG -std=gnu++23 -MD -MT
CMakeFiles/test_target.dir/paths.cpp.o -MF
CMakeFiles/test_target.dir/paths.cpp.o.d -fmodules-ts
-fmodule-mapper=CMakeFiles/test_target.dir/paths.cpp.o.modmap -MD
-fdeps-format=p1689r5 -x c++ -o CMakeFiles/test_target.dir/paths.cpp.o -c
/app/paths.cpp
In module imported at /app/paths.cpp:8:1:
runtimeCore: error: failed to read compiled module cluster 1: Bad file data
runtimeCore: note: compiled module file is
'CMakeFiles/test_target.dir/runtimeCore.gcm'
runtimeCore: error: failed to read compiled module cluster 2: Bad file data
runtimeCore: error: failed to read compiled module cluster 3: Bad file data
paths.cpp:12:5: fatal error: failed to load binding
'::EnvironmentVariableBase@runtimeCore'
   12 |     EnvironmentVariableBase<bool> loadConfig;
      |     ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
```

Reply via email to