seen with trunk 20230718:
$ cat foo.ii module; # 1 "" 1 3 namespace std { template <typename> struct hash; } typedef long unsigned size_t; namespace std { template <typename, typename> struct pair { int second; template <typename..., size_t, typename..., size_t> constexpr pair(); }; template <typename _T1, typename _T2> void operator>(pair<_T1, _T2>, pair<_T1, _T2>); template <typename> struct __new_allocator { allocate___n() { allocate___n > this; } }; template <typename _Tp> using __allocator_base = __new_allocator<_Tp>; template <typename> struct allocator : __allocator_base<int> { __attribute__allocator() {} }; template class allocator<wchar_t>; template <size_t> struct array; void get(array<1>); template <class _T1, class _T2> template <typename..., size_t, typename..., size_t> constexpr pair<_T1, _T2>::pair() : second(get) {} struct vector { friend hash<vector>; }; void swap(vector); template <typename> struct __uniq_ptr_impl { swap() { std::swap; } }; template <typename = int> struct unique_ptr { __uniq_ptr_impl<int> pointer; }; struct shared_ptr { operator=(unique_ptr<>); }; struct __shared_ptr { friend shared_ptr; }; void operator==(__shared_ptr, __shared_ptr); template <unsigned long> struct array { size() { size == 0; } }; } // namespace std #pragma GCC optimize "" namespace std { struct id { friend operator>(id, id); }; struct hash<id>; } // namespace std # 7 "" 2 export module spdlog_wrapper;
$ /usr/lib/gcc-snapshot/bin/g++ -std=c++20 -fmodules-ts -Wall -c foo.ii foo.ii:7:8: internal compiler error: in core_vals, at cp/module.cc:6262 7 | namespace std { | ^~~~~~ 0x11e5613 trees_out::core_vals(tree_node*) ../../src/gcc/cp/module.cc:6262 0x11e6353 trees_out::tree_node_vals(tree_node*) ../../src/gcc/cp/module.cc:7218 0x11ec349 trees_out::tree_value(tree_node*) ../../src/gcc/cp/module.cc:9083 0x11e8faf trees_out::tree_node(tree_node*) ../../src/gcc/cp/module.cc:9281 0x11e59be trees_out::core_vals(tree_node*) ../../src/gcc/cp/module.cc:6171 0x11e6353 trees_out::tree_node_vals(tree_node*) ../../src/gcc/cp/module.cc:7218 0x11e6cb7 trees_out::decl_value(tree_node*, depset*) ../../src/gcc/cp/module.cc:7797 0x11ee50d depset::hash::find_dependencies(module_state*) ../../src/gcc/cp/module.cc:13328 0x11eea54 module_state::write_begin(elf_out*, cpp_reader*, module_state_config&, unsigned int&) ../../src/gcc/cp/module.cc:17895 0x79f4e7 finish_module_processing(cpp_reader*) ../../src/gcc/cp/module.cc:20237 0x1bc5fd5 c_parse_final_cleanups() ../../src/gcc/cp/decl2.cc:5184 0x21034b1 c_common_parse_file() ../../src/gcc/c-family/c-opts.cc:1274 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report.
seen with trunk 20230718:
$ cat foo.ii <_Tp>; base<int> { _allocator( ) {} ptr_impl< int> pointer; (unique_ ptr<>); =(__shared_ ptr, __shared_ptr);
module;
# 1 "" 1 3
namespace std {
template <typename> struct hash;
}
typedef long unsigned size_t;
namespace std {
template <typename, typename> struct pair {
int second;
template <typename..., size_t, typename..., size_t> constexpr pair();
};
template <typename _T1, typename _T2>
void operator>(pair<_T1, _T2>, pair<_T1, _T2>);
template <typename> struct __new_allocator {
allocate___n() { allocate___n > this; }
};
template <typename _Tp> using __allocator_base = __new_allocator
template <typename> struct allocator : __allocator_
__attribute_
};
template class allocator<wchar_t>;
template <size_t> struct array;
void get(array<1>);
template <class _T1, class _T2>
template <typename..., size_t, typename..., size_t>
constexpr pair<_T1, _T2>::pair() : second(get) {}
struct vector {
friend hash<vector>;
};
void swap(vector);
template <typename> struct __uniq_ptr_impl {
swap() { std::swap; }
};
template <typename = int> struct unique_ptr {
__uniq_
};
struct shared_ptr {
operator=
};
struct __shared_ptr {
friend shared_ptr;
};
void operator=
template <unsigned long> struct array {
size() { size == 0; }
};
} // namespace std
#pragma GCC optimize ""
namespace std {
struct id {
friend operator>(id, id);
};
struct hash<id>;
} // namespace std
# 7 "" 2
export module spdlog_wrapper;
$ /usr/lib/ gcc-snapshot/ bin/g++ -std=c++20 -fmodules-ts -Wall -c foo.ii :core_vals( tree_node* )
../../ src/gcc/ cp/module. cc:6262 :tree_node_ vals(tree_ node*)
../../ src/gcc/ cp/module. cc:7218 :tree_value( tree_node* )
../../ src/gcc/ cp/module. cc:9083 :tree_node( tree_node* )
../../ src/gcc/ cp/module. cc:9281 :core_vals( tree_node* )
../../ src/gcc/ cp/module. cc:6171 :tree_node_ vals(tree_ node*)
../../ src/gcc/ cp/module. cc:7218 :decl_value( tree_node* , depset*)
../../ src/gcc/ cp/module. cc:7797 :hash:: find_dependenci es(module_ state*)
../../ src/gcc/ cp/module. cc:13328 state:: write_begin( elf_out* , cpp_reader*, module_ state_config& , unsigned int&)
../../ src/gcc/ cp/module. cc:17895 module_ processing( cpp_reader* )
../../ src/gcc/ cp/module. cc:20237 final_cleanups( )
../../ src/gcc/ cp/decl2. cc:5184 parse_file( )
../../ src/gcc/ c-family/ c-opts. cc:1274
foo.ii:7:8: internal compiler error: in core_vals, at cp/module.cc:6262
7 | namespace std {
| ^~~~~~
0x11e5613 trees_out:
0x11e6353 trees_out:
0x11ec349 trees_out:
0x11e8faf trees_out:
0x11e59be trees_out:
0x11e6353 trees_out:
0x11e6cb7 trees_out:
0x11ee50d depset:
0x11eea54 module_
0x79f4e7 finish_
0x1bc5fd5 c_parse_
0x21034b1 c_common_
Please submit a full bug report, with preprocessed source (by using -freport-bug).
Please include the complete backtrace with any bug report.