https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106304
Bug ID: 106304 Summary: [modules] ICE compiling dynamic_cast in constexpr function (in tree_node, at cp/module.cc:9183) Product: gcc Version: 13.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: johelegp at gmail dot com CC: johelegp at gmail dot com Target Milestone: --- See https://godbolt.org/z/xz4Mhd8Wc, which Clang accepts: https://godbolt.org/z/saachff5d. mod.cpp: ```C++ export module mod; template<class T> struct A : T { constexpr A(T v) : T{v} { } ~A() = default; // Fixes GCC. }; struct B { virtual ~B() = default; }; export inline constexpr auto x = A{B{}}; export constexpr const A<B>* y(const B& b) { return dynamic_cast<const A<B>*>(&b); } ``` test.cpp: ```C++ import mod; static_assert(&x == y(x)); int main() { } ``` Output: ``` [ 50%] Building CXX object CMakeFiles/mod.dir/mod.cpp.o mod.cpp:1:8: internal compiler error: in tree_node, at cp/module.cc:9183 1 | export module mod; | ^~~~~~ 0x221f229 internal_error(char const*, ...) ???:0 0x74c10d fancy_abort(char const*, int, char const*) ???:0 0x8fd00f trees_out::tree_node(tree_node*) ???:0 0x8fde5f trees_out::core_vals(tree_node*) ???:0 0x902d6d trees_out::tree_value(tree_node*) ???:0 0x8fcf41 trees_out::tree_node(tree_node*) ???:0 0x8fde5f trees_out::core_vals(tree_node*) ???:0 0x902d6d trees_out::tree_value(tree_node*) ???:0 0x8fcf41 trees_out::tree_node(tree_node*) ???:0 0x8fde5f trees_out::core_vals(tree_node*) ???:0 0x902d6d trees_out::tree_value(tree_node*) ???:0 0x8fcf41 trees_out::tree_node(tree_node*) ???:0 0x8fde5f trees_out::core_vals(tree_node*) ???:0 0x902d6d trees_out::tree_value(tree_node*) ???:0 0x8fcf41 trees_out::tree_node(tree_node*) ???:0 0x8fde5f trees_out::core_vals(tree_node*) ???:0 0x902d6d trees_out::tree_value(tree_node*) ???:0 0x8fcf41 trees_out::tree_node(tree_node*) ???:0 0x8fde5f trees_out::core_vals(tree_node*) ???:0 0x902d6d trees_out::tree_value(tree_node*) ???:0 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. ```