From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 102218 invoked by alias); 9 Aug 2015 09:08:11 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 102187 invoked by uid 48); 9 Aug 2015 09:08:06 -0000 From: "trippels at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/67164] New: [6 Regression] ICE: tree check:=?UTF-8?Q?=20expected=20class=20=E2=80=98expression=E2=80=99?=,=?UTF-8?Q?=20have=20=E2=80=98exceptional=E2=80=99=20?=(argument_pack_select) in tree_operand_check, at tree.h:3356 Date: Sun, 09 Aug 2015 09:08:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 6.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: trippels at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter target_milestone Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-08/txt/msg00607.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D67164 Bug ID: 67164 Summary: [6 Regression] ICE: tree check: expected class =E2=80=98expression=E2=80=99, have =E2=80=98exceptional= =E2=80=99 (argument_pack_select) in tree_operand_check, at tree.h:3356 Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: trippels at gcc dot gnu.org Target Milestone: --- % cat github_113.ii namespace std { template struct integral_constant { static constexpr _Tp value =3D 0; }; template struct conditional; template struct __or_; template struct __or_<_B1, _B2> : conditional<1, _B1, _B2> {}; template struct __and_; template struct __and_<_B1, _B2> : conditional<1, _B2, _B1> {}; template struct is_rvalue_reference; template struct is_reference : __or_, is_rvalue_reference<_Tp>>::type {}; template _Tp declval(); struct __do_is_direct_constructible_impl { template ()))> static integral_constant __test(int); }; template struct __is_direct_constructible_impl : __do_is_direct_constructible_impl { decltype(__test<_Tp, _Arg>(0)) type; }; template struct __is_direct_constructible_new_safe : __and_> {}; template struct __is_direct_constructible_new : conditional::value, int, __is_direct_constructible_new_safe<_Tp, _Arg>> {}; template struct __is_direct_constructible : __is_direct_constructible_new<_Tp, _Arg>::type {}; template struct __is_nary_constructible; template struct __is_nary_constructible<_Tp, _Arg> : __is_direct_constructible<_Tp, _Arg> {}; template struct is_constructible : __is_nary_constructible<_Tp, _Args...>::type {}; template struct enable_if; template struct conditional { typedef _Iftrue type; }; template struct conditional { typedef _Iffalse type; }; } namespace boost { namespace hana { template struct fast_and; template struct closure { template ::value...>::value= >> closure(Yn...); template ::value...>::value>::type> closure(closure); }; template struct make_impl; template struct make_t { template decltype(auto) operator()(X... x) { return make_impl::apply(x...); } }; template make_t make; struct Pair; auto make_pair =3D make; struct Tuple; auto make_tuple =3D make; template <> struct make_impl { template static closure apply(Xs &&...); }; struct pair : closure<> { using closure::closure; }; template <> struct make_impl { template static pair apply(F, S); }; namespace struct_detail { template struct member_ptr {}; template auto prepare_member_name_impl() {} template auto prepare_member_name() { return prepare_member_name_impl; } } } } struct Person { int Person; auto apply() { struct member_names; boost::hana::make_tuple(boost::hana::make_pair( boost::hana::struct_detail::prepare_member_name<0, member_names>(), boost::hana::struct_detail::member_ptr{})); } }; % clang++ -std=3Dc++14 -c github_113.ii % (gcc-5 rejects the testcase) % g++ -std=3Dc++14 -c github_113.ii github_113.ii: In instantiation of =E2=80=98struct std::__is_direct_constructible_impl&&>=E2=80=99: github_113.ii:41:8: required from =E2=80=98struct std::is_constructible&&>=E2=80=99 github_113.ii:56:13: required by substitution of =E2=80=98template boost::hana::closure::closure(Yn ...) [with Yn =3D boost::hana::closure; =3D ]=E2=80=99 github_113.ii:67:43: required from =E2=80=98decltype(auto) boost::hana::make_t::operator()(X ...) [with X =3D {boost::hana::= pair}; Datatype =3D boost::hana::Tuple]=E2=80=99 github_113.ii:100:67: required from here github_113.ii:24:29: error: no matching function for call to =E2=80=98std::__is_direct_constructible_impl&&>::__test(int) =E2=80=99 decltype(__test<_Tp, _Arg>(0)) type; ^ github_113.ii:20:34: note: candidate: template static std::integral_constant std::__do_is_direct_constructible_impl::__test(int) static integral_constant __test(int); ^ github_113.ii:20:34: note: template argument deduction/substitution faile= d: github_113.ii:19:13: error: invalid cast of an rvalue expression of type =E2=80=98boost::hana::closure=E2=80=99 to type =E2=80= =98boost::hana::pair&=E2=80=99 typename =3D decltype(_Tp(declval<_Arg>()))> ^ (trunk ICEs since r214396) % g++ -c github_113.ii github_113.ii: In substitution of =E2=80=98template::value ...>::value>::type > boost::hana::pair::pair(boost::hana::closure) [with Yn =3D ; typename std::enable_if::va= lue ...>::value>::type =3D ]=E2=80=99: github_113.ii:19:13: required by substitution of =E2=80=98template static std::integral_constant std::__do_is_direct_constructible_impl::__test(int) [with _Tp =3D boost::hana::pair&; _Arg =3D boost::hana::closure&&; =3D ]=E2=80=99 github_113.ii:24:29: required from =E2=80=98struct std::__is_direct_constructible_impl&&>=E2=80=99 github_113.ii:41:8: required from =E2=80=98struct std::is_constructible&&>=E2=80=99 github_113.ii:56:13: required by substitution of =E2=80=98template boost::hana::closure::closure(Yn ...) [with Yn =3D boost::hana::closure; =3D ]=E2=80=99 github_113.ii:67:43: required from =E2=80=98decltype(auto) boost::hana::make_t::operator()(X ...) [with X =3D {boost::hana::= pair}; Datatype =3D boost::hana::Tuple]=E2=80=99 github_113.ii:100:67: required from here github_113.ii:19:13: internal compiler error: tree check: expected class =E2=80=98expression=E2=80=99, have =E2=80=98exceptional=E2=80=99 (argument_= pack_select) in tree_operand_check, at tree.h:3356 typename =3D decltype(_Tp(declval<_Arg>()))> ^ 0x10d3fcb7 tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) ../../gcc/gcc/tree.c:9550 0x101160e3 expr_check ../../gcc/gcc/tree.h:3027 0x101160e3 tree_operand_check ../../gcc/gcc/tree.h:3356 0x102387cb tree_operand_check ../../gcc/gcc/tree.h:2972 0x102387cb unify ../../gcc/gcc/cp/pt.c:19046 0x102360ab unify ../../gcc/gcc/cp/pt.c:19096 0x101167b3 try_class_unification ../../gcc/gcc/cp/pt.c:18100 0x102356db unify ../../gcc/gcc/cp/pt.c:19134 0x1023a96f unify_one_argument ../../gcc/gcc/cp/pt.c:17450 0x10230277 type_unification_real ../../gcc/gcc/cp/pt.c:17522 0x10241453 fn_type_unification(tree_node*, tree_node*, tree_node*, tree_nod= e* const*, unsigned int, tree_node*, unification_kind_t, int, bool, bool) ../../gcc/gcc/cp/pt.c:16969 0x1018b31b add_template_candidate_real ../../gcc/gcc/cp/call.c:3054 0x1018bf4f add_template_candidate ../../gcc/gcc/cp/call.c:3151 0x1018bf4f add_candidates ../../gcc/gcc/cp/call.c:5307 0x101875d3 build_user_type_conversion_1 ../../gcc/gcc/cp/call.c:3662 0x10187ffb implicit_conversion ../../gcc/gcc/cp/call.c:1853 0x1018981b reference_binding ../../gcc/gcc/cp/call.c:1701 0x10187e27 implicit_conversion ../../gcc/gcc/cp/call.c:1792 0x10191aef perform_direct_initialization_if_possible(tree_node*, tree_node*, bool, int) ../../gcc/gcc/cp/call.c:9570 0x10342c73 build_static_cast_1 ../../gcc/gcc/cp/typeck.c:6631 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See for instructions. >>From gcc-bugs-return-494466-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sun Aug 09 09:45:02 2015 Return-Path: Delivered-To: listarch-gcc-bugs@gcc.gnu.org Received: (qmail 26001 invoked by alias); 9 Aug 2015 09:45:02 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Delivered-To: mailing list gcc-bugs@gcc.gnu.org Received: (qmail 25963 invoked by uid 48); 9 Aug 2015 09:44:57 -0000 From: "trippels at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/67164] ICE: tree check:=?UTF-8?Q?=20expected=20class=20=E2=80=98expression=E2=80=99?=,=?UTF-8?Q?=20have=20=E2=80=98exceptional=E2=80=99=20?=(argument_pack_select) in tree_operand_check, at tree.h:3356 Date: Sun, 09 Aug 2015 09:45:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 6.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: trippels at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: short_desc cf_known_to_fail Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-08/txt/msg00608.txt.bz2 Content-length: 2106 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D67164 Markus Trippelsdorf changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|[6 Regression] ICE: tree |ICE: tree check: expected |check: expected class |class =E2=80=98expression= =E2=80=99, have |=E2=80=98expression=E2=80=99, have |=E2=80=98e= xceptional=E2=80=99 |=E2=80=98exceptional=E2=80=99 |(argument_= pack_select) in |(argument_pack_select) in |tree_operand_check, at |tree_operand_check, at |tree.h:3356 |tree.h:3356 | Known to fail| |5.1.0, 6.0 --- Comment #1 from Markus Trippelsdorf --- With --enable-checking gcc-5 also ICEs. gcc-4.9 rejects the testcase: github_113.ii:70:47: error: template declaration of =E2=80=98boost::hana::make_t boost::hana::make=E2=80=99 template make_t make; ^ github_113.ii:72:18: error: =E2=80=98make=E2=80=99 was not declared in this= scope auto make_pair =3D make; ^ github_113.ii:72:27: error: expected primary-expression before =E2=80=98>= =E2=80=99 token auto make_pair =3D make; ^ github_113.ii:72:28: error: expected primary-expression before =E2=80=98;= =E2=80=99 token auto make_pair =3D make; ^ github_113.ii:74:19: error: =E2=80=98make=E2=80=99 was not declared in this= scope auto make_tuple =3D make; ^ github_113.ii:74:29: error: expected primary-expression before =E2=80=98>= =E2=80=99 token auto make_tuple =3D make; ^ github_113.ii:74:30: error: expected primary-expression before =E2=80=98;= =E2=80=99 token auto make_tuple =3D make; ^ >>From gcc-bugs-return-494467-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sun Aug 09 10:33:07 2015 Return-Path: Delivered-To: listarch-gcc-bugs@gcc.gnu.org Received: (qmail 73269 invoked by alias); 9 Aug 2015 10:33:07 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Delivered-To: mailing list gcc-bugs@gcc.gnu.org Received: (qmail 73207 invoked by uid 48); 9 Aug 2015 10:33:02 -0000 From: "trippels at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/67164] ICE: tree check:=?UTF-8?Q?=20expected=20class=20=E2=80=98expression=E2=80=99?=,=?UTF-8?Q?=20have=20=E2=80=98exceptional=E2=80=99=20?=(argument_pack_select) in tree_operand_check, at tree.h:3356 Date: Sun, 09 Aug 2015 10:33:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 6.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: trippels at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: cc Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-08/txt/msg00609.txt.bz2 Content-length: 490 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67164 Markus Trippelsdorf changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ldionne.2 at gmail dot com --- Comment #2 from Markus Trippelsdorf --- (Louis, this ICE was introduced by commit 8a0ddb0fa7b6f7a of https://github.com/ldionne/hana)