https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101239
Bug ID: 101239 Summary: "Internal compiler error: Error reporting routines re-entered." in size_in_bytes_loc Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: redi at gcc dot gnu.org Target Milestone: --- This valid code produces an ICE: template<typename T> struct Blerk { template<typename Ptr> static constexpr auto type(Ptr p = Ptr(), int n = 0) -> decltype(p[n]) { return false; } template<typename Ptr> static constexpr int type(...) { return 1; } decltype(type<T*>()) f() const; }; struct S; extern Blerk<S[]> p; auto s = p.f(); struct S { }; ice.C: In substitution of 'template<class Ptr> static constexpr decltype (p[n]) Blerk<S []>::type(Ptr, int) [with Ptr = S (*)[]]': ice.C:15:20: required from 'struct Blerk<S []>' ice.C:20:11: required from here ice.C:7:18: error: invalid use of array with unspecified bounds 7 | -> decltype(p[n]) | ~^ ice.C: In instantiation of 'struct Blerk<S []>': ice.C:20:11: required from here ice.C:15:20: error: call of overloaded 'type()' is ambiguous 15 | decltype(type<T*>()) f() const; | ~~~~~~~~^~ ' Internal compiler error: Error reporting routines re-entered. 0x138c3fd size_in_bytes_loc(unsigned int, tree_node const*) /home/jwakely/src/gcc/gcc/gcc/tree.c:3486 0x138c3fd size_in_bytes_loc(unsigned int, tree_node const*) /home/jwakely/src/gcc/gcc/gcc/tree.c:3474 0xb5b6ec pointer_int_sum(unsigned int, tree_code, tree_node*, tree_node*, bool) /home/jwakely/src/gcc/gcc/gcc/c-family/c-common.c:3301 0xb3b078 cp_build_array_ref(unsigned int, tree_node*, tree_node*, int) /home/jwakely/src/gcc/gcc/gcc/cp/typeck.c:3708 0x8f2036 build_new_op_1 /home/jwakely/src/gcc/gcc/gcc/cp/call.c:6743 0x8f25ad build_new_op(op_location_t const&, tree_code, int, tree_node*, tree_node*, tree_node*, tree_node**, int) /home/jwakely/src/gcc/gcc/gcc/cp/call.c:6772 0xb295df build_x_array_ref(unsigned int, tree_node*, tree_node*, int) /home/jwakely/src/gcc/gcc/gcc/cp/typeck.c:4385 0xaa51b4 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/jwakely/src/gcc/gcc/gcc/cp/pt.c:19874 0xac2677 tsubst(tree_node*, tree_node*, int, tree_node*) /home/jwakely/src/gcc/gcc/gcc/cp/pt.c:16119 0x9b0580 dump_template_bindings /home/jwakely/src/gcc/gcc/gcc/cp/error.c:482 0x9a9ba7 dump_substitution /home/jwakely/src/gcc/gcc/gcc/cp/error.c:1638 0x9a9ba7 dump_substitution /home/jwakely/src/gcc/gcc/gcc/cp/error.c:1630 0x9a9ba7 dump_function_decl /home/jwakely/src/gcc/gcc/gcc/cp/error.c:1796 0x9b1a18 decl_to_string /home/jwakely/src/gcc/gcc/gcc/cp/error.c:3216 0x9b1a18 cp_printer /home/jwakely/src/gcc/gcc/gcc/cp/error.c:4389 0x1c6ed6c pp_format(pretty_printer*, text_info*) /home/jwakely/src/gcc/gcc/gcc/pretty-print.c:1475 0x1c52850 diagnostic_report_diagnostic(diagnostic_context*, diagnostic_info*) /home/jwakely/src/gcc/gcc/gcc/diagnostic.c:1275 0x1c556b7 diagnostic_impl /home/jwakely/src/gcc/gcc/gcc/diagnostic.c:1437 0x1c556b7 inform(unsigned int, char const*, ...) /home/jwakely/src/gcc/gcc/gcc/diagnostic.c:1516 0x8e1cb6 print_z_candidate /home/jwakely/src/gcc/gcc/gcc/cp/call.c:3782 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions.