https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100584
Bug ID: 100584 Summary: [modules] ICE when using import <thread>; with std::jthread Product: gcc Version: 11.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: andreemalcher at gmail dot com Target Milestone: --- $ cat thread.cpp import <iostream>; // Compiles & runs fine with include or if order if swapped with next line #include <thread> int main() { std::jthread t{[]{}}; // Compiles & runs fine with std::thread } $ g++ -fmodules-ts -std=c++20 -c -x c++-system-header iostream$ g++ -fmodules-ts -std=c++20 -o prog thread.cpp -pthread during IPA pass: visibility thread.cpp:6:1: internal compiler error: in function_and_variable_visibility, at ipa-visibility.c:712 6 | } | ^ 0x1702697 internal_error(char const*, ...) ???:0 0x64082b fancy_abort(char const*, int, char const*) ???:0 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <file:///usr/share/doc/gcc-11/README.Bugs> for instructions. If you replace std::jthread with std::thread (optionally, with corresponding join()), it compiles just fine. Also, the order of import vs. include seems to matter (see comment in code). Same ICE for import <string>;, for example, but not for import <vector>;. Haven't tried others.