https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78507
Bug ID: 78507 Summary: [7 Regression] ICE: tree check: expected integer_type or enumeral_type or boolean_type or real_type or fixed_point_type, have pointer_type in int_fits_type_p, at tree.c:9153 Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: trippels at gcc dot gnu.org Target Milestone: --- markus@x4 /tmp % cat StackMaps.ii struct A { template <typename _Iterator1, typename _Iterator2> int operator()(_Iterator1, _Iterator2); }; struct B { template <typename _BI1, typename _BI2> static _BI2 __copy_move_b(_BI1 p1, _BI2 p2) { _BI1 a; long b = p1 - a; for (; b > 0; --b) *--p2 = *--p1; } }; template <int, typename _BI1, typename _BI2> void __copy_move_backward_a(_BI1 p1, _BI2 p2) { B::__copy_move_b(p1, p2); } template <int, typename _BI1, typename _BI2> void __copy_move_backward_a2(_BI1 p1, _BI2 p2) { __copy_move_backward_a<0>(p1, p2); } template <typename _BI1, typename _BI2> void move_backward(_BI1 p1, _BI2 p2) { __copy_move_backward_a2<0>(p1, p2); } template <typename _RandomAccessIterator, typename _Compare> void __insertion_sort(_RandomAccessIterator, _Compare p2) { for (_RandomAccessIterator c;; ++c) if (p2(0, 0)) move_backward(c, c + 1); } template <typename _RandomAccessIterator, typename _Compare> void __final_insertion_sort(_RandomAccessIterator, _Compare p2) { _RandomAccessIterator d; __insertion_sort(d, p2); } template <typename _RandomAccessIterator, typename _Compare> void __sort(_RandomAccessIterator p1, _Compare p2) { __final_insertion_sort(p1, p2); } template <typename _RandomAccessIterator, typename _Compare> void sort(_RandomAccessIterator, _RandomAccessIterator p2, _Compare) { A e; __sort(p2, e); } struct C { struct D { int DwarfRegNum; }; int parseRegisterLiveOutMask() const; }; int C::parseRegisterLiveOutMask() const { D f, g; sort(&f, &g, [] {}); } markus@x4 /tmp % g++ -c -O3 StackMaps.ii StackMaps.ii: In member function ‘int C::parseRegisterLiveOutMask() const’: StackMaps.ii:51:5: internal compiler error: tree check: expected integer_type or enumeral_type or boolean_type or real_type or fixed_point_type, have pointer_type in int_fits_type_p, at tree.c:9153 int C::parseRegisterLiveOutMask() const { ^ 0x101b69c tree_check_failed(tree_node const*, char const*, int, char const*, ...) ../../gcc/gcc/tree.c:9815 0x102ea83 tree_check5(tree_node const*, char const*, int, char const*, tree_code, tree_code, tree_code, tree_code, tree_code) ../../gcc/gcc/tree.h:3393 0x102ea83 int_fits_type_p(tree_node const*, tree_node const*) ../../gcc/gcc/tree.c:9153 0x117718f gimple_simplify_153 /var/tmp/gcc_build_dir/gcc/gimple-match.c:6868 0x117c41b gimple_simplify_COND_EXPR /var/tmp/gcc_build_dir/gcc/gimple-match.c:66574 0x10f920d gimple_simplify /var/tmp/gcc_build_dir/gcc/gimple-match.c:67679 0x10faaf8 gimple_resimplify3(gimple**, code_helper*, tree_node*, tree_node**, tree_node* (*)(tree_node*)) ../../gcc/gcc/gimple-match-head.c:223 0x11a6b85 gimple_simplify(gimple*, code_helper*, tree_node**, gimple**, tree_node* (*)(tree_node*), tree_node* (*)(tree_node*)) ../../gcc/gcc/gimple-match-head.c:692 0xadd520 fold_stmt_1 ../../gcc/gcc/gimple-fold.c:4256 0xeadf49 execute ../../gcc/gcc/tree-ssa-forwprop.c:2391 Please submit a full bug report,