https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109027
--- Comment #3 from Steven Sun <StevenSun2021 at hotmail dot com> --- Oh, my reduced test case has the same infinite recursion occurring, where the `a+4` is binop_svalue (pointer_plus_expr, unaryop_svalue (nop_expr, conjured_svalue (, _iterator::_iterator (&__position, 0);, decl_region(frame_region(‘Vector::Filter’, index: 2, depth: 3), ‘struct iterator’, ‘iterator __position’))), constant_svalue(‘long unsigned int’, 4)) the `b-4` is binop_svalue (pointer_plus_expr, sub_svalue (, conjured_svalue (, _iterator::_iterator (&__position, 0);, decl_region(globals, ‘struct Vector’, ‘Vector vec’)), field_region(decl_region(globals, ‘struct Vector’, ‘Vector vec’), ‘int *’, ‘int* Vector::_M_finish’)), constant_svalue(‘sizetype’, 18446744073709551612)) Current m_equiv_classes dump: ---------------- new equiv_class ---------------- region_svalue(‘struct Vector *’, decl_region(globals, ‘struct Vector’, ‘Vector vec’)) ---------------- new equiv_class ---------------- constant_svalue(‘void *’, 0B) ---------------- new equiv_class ---------------- region_svalue(‘struct _iterator *’, decl_region(frame_region(‘Vector::Filter’, index: 2, depth: 3), ‘struct _iterator’, ‘<anonymous>’)) ---------------- new equiv_class ---------------- region_svalue(‘int * *’, field_region(decl_region(globals, ‘struct Vector’, ‘Vector vec’), ‘int *’, ‘int* Vector::_M_finish’)) ---------------- new equiv_class ---------------- region_svalue(‘struct _iterator *’, decl_region(frame_region(‘Vector::Filter’, index: 2, depth: 3), ‘struct _iterator’, ‘_iterator it’)) ---------------- new equiv_class ---------------- sub_svalue (, conjured_svalue (, it = Vector::begin (this_10(D));, decl_region(frame_region(‘Vector::Filter’, index: 2, depth: 3), ‘struct _iterator’, ‘_iterator it’)), field_region(decl_region(frame_region(‘Vector::Filter’, index: 2, depth: 3), ‘struct _iterator’, ‘_iterator it’), ‘int *’, ‘int* _iterator::_M_current’)) ---------------- new equiv_class ---------------- sub_svalue (, conjured_svalue (, it = Vector::begin (this_10(D));, decl_region(globals, ‘struct Vector’, ‘Vector vec’)), cast_region(field_region(decl_region(globals, ‘struct Vector’, ‘Vector vec’), ‘int *’, ‘int* Vector::_M_finish’), ‘int * const’)) ---------------- new equiv_class ---------------- region_svalue(‘struct _iterator *’, decl_region(frame_region(‘Vector::Filter’, index: 2, depth: 3), ‘struct _iterator’, ‘<anonymous>’)) ---------------- new equiv_class ---------------- region_svalue(‘struct iterator *’, decl_region(frame_region(‘Vector::Filter’, index: 2, depth: 3), ‘struct iterator’, ‘iterator __position’)) ---------------- new equiv_class ---------------- region_svalue(‘struct _iterator *’, decl_region(frame_region(‘_iterator::operator+’, index: 3, depth: 4), ‘struct _iterator’, ‘<anonymous>’)) ---------------- new equiv_class ---------------- region_svalue(‘int * const *’, decl_region(frame_region(‘_iterator::operator+’, index: 3, depth: 4), ‘int * const’, ‘<anonymous>’)) ---------------- new equiv_class ---------------- region_svalue(‘struct _iterator *’, decl_region(frame_region(‘Vector::Filter’, index: 2, depth: 3), ‘struct _iterator’, ‘<anonymous>’)) ---------------- new equiv_class ---------------- binop_svalue (pointer_plus_expr, unaryop_svalue (nop_expr, conjured_svalue (, _iterator::_iterator (&__position, 0);, decl_region(frame_region(‘Vector::Filter’, index: 2, depth: 3), ‘struct iterator’, ‘iterator __position’))), constant_svalue(‘long unsigned int’, 4)) ---------------- new equiv_class ---------------- sub_svalue (, conjured_svalue (, _iterator::_iterator (&__position, 0);, decl_region(globals, ‘struct Vector’, ‘Vector vec’)), cast_region(field_region(decl_region(globals, ‘struct Vector’, ‘Vector vec’), ‘int *’, ‘int* Vector::_M_finish’), ‘int * const’)) ---------------- new equiv_class ---------------- binop_svalue (pointer_plus_expr, sub_svalue (, conjured_svalue (, _iterator::_iterator (&__position, 0);, decl_region(globals, ‘struct Vector’, ‘Vector vec’)), field_region(decl_region(globals, ‘struct Vector’, ‘Vector vec’), ‘int *’, ‘int* Vector::_M_finish’)), constant_svalue(‘sizetype’, 18446744073709551612))