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,

Reply via email to