https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81167
Bug ID: 81167 Summary: [8 Regression] ICE on valid C++ code in deferred_printed_type, at cp/error.c:118 Product: gcc Version: 7.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: dmalcolm at gcc dot gnu.org Target Milestone: --- Starting from r248698, we ICE on a clang test-case: $ g++ PR31384.pass.cpp -Wconversion PR31384.pass.cpp: In function ‘int main()’: PR31384.pass.cpp:57:47: warning: choosing ‘Derived<T>::operator std::tuple<U>() && [with U = Implicit; T = int]’ over ‘constexpr std::tuple<_Elements>::tuple(const std::tuple<_Args1 ...>&) [with _UElements = {int}; _Dummy = void; typename std::enable_if<((std::_TC<((sizeof... (_Elements) == sizeof... (_UElements)) && (! std::is_same<std::tuple<_Elements>, std::tuple<_Args1 ...> >::value)), _Elements ...>::_ConstructibleTuple<_UElements ...>() && std::_TC<((sizeof... (_Elements) == sizeof... (_UElements)) && (! std::is_same<std::tuple<_Elements>, std::tuple<_Args1 ...> >::value)), _Elements ...>::_ImplicitlyConvertibleTuple<_UElements ...>()) && std::_TC<(std::is_same<_Dummy, void>::value && (sizeof... (_Elements) == 1)), _Elements ...>::_NonNestedTuple<const tuple<_Args1 ...>&>()), bool>::type <anonymous> = 1; _Elements = {Implicit}]’ [-Wconversion] std::tuple<Implicit> foo = Derived<int>{42}; ((void)foo); ^ ‘ in deferred_printed_type, at cp/error.c:118 0x6d1fc9 deferred_printed_type::deferred_printed_type(tree_node*, char const**, bool, bool) ../../gcc/cp/error.c:118 0x6d1fc9 defer_phase_2_of_type_diff ../../gcc/cp/error.c:3985 0x6e0d17 cp_printer ../../gcc/cp/error.c:4062 0x15ff188 pp_format(pretty_printer*, text_info*) ../../gcc/pretty-print.c:679 0x15efe9e diagnostic_report_diagnostic(diagnostic_context*, diagnostic_info*) ../../gcc/diagnostic.c:974 0x15f026e diagnostic_impl ../../gcc/diagnostic.c:1099 0x15f05dc warning(int, char const*, ...) ../../gcc/diagnostic.c:1187 0x6043d6 joust ../../gcc/cp/call.c:10075 0x5fb52b joust ../../gcc/cp/call.c:9920 0x5fb52b build_over_call ../../gcc/cp/call.c:7623 0x600d4d convert_like_real ../../gcc/cp/call.c:6757 0x60117a convert_like_real ../../gcc/cp/call.c:6873 0x60c8a9 build_user_type_conversion(tree_node*, tree_node*, int, int) ../../gcc/cp/call.c:3995 0x67320b ocp_convert(tree_node*, tree_node*, int, int, int) ../../gcc/cp/cvt.c:889 0x6ecf75 expand_default_init ../../gcc/cp/init.c:1789 0x6ecf75 expand_aggr_init_1 ../../gcc/cp/init.c:1968 0x6ed719 build_aggr_init(tree_node*, tree_node*, int, int) ../../gcc/cp/init.c:1706 0x68a1bf build_aggr_init_full_exprs ../../gcc/cp/decl.c:6128 0x68a1bf check_initializer ../../gcc/cp/decl.c:6276 0x6b509c cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int) ../../gcc/cp/decl.c:6995