+ if (tem.kind () == old_vr->kind () + && tem.min () == old_vr->min () + && tem.max () == old_vr->max ()) + continue;
I think it would be cleaner to use tem.ignore_equivs_equal_p (*old_vr). The goal was to use == when the equivalence bitmap should be taken into account, or ignore_equivs_equal_p() otherwise.
(Unless you really really don't want to compare the extremes with vrp_operand_equal_p.)
Aldy