https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90036

--- Comment #20 from Richard Biener <rguenth at gcc dot gnu.org> ---
FRE fails here because its simple predication can only record && predicates,
not ||:

Value numbering stmt = if (_3 != 0)
Recording on edge 2->4 _3 ne_expr 0 == true
Recording on edge 2->3 _3 ne_expr 0 == false
Recording on edge 2->4 _3 eq_expr 0 == false
Recording on edge 2->3 _3 eq_expr 0 == true
Recording on edge 2->3 _3 lt_expr 0 == false
Recording on edge 2->3 _3 gt_expr 0 == false
Recording on edge 2->3 _1 eq_expr 0 == true
Recording on edge 2->3 _1 ne_expr 0 == false
Recording on edge 2->3 _1 lt_expr 0 == false
Recording on edge 2->3 _1 gt_expr 0 == false
Recording on edge 2->3 vptr_14(D) eq_expr 0 == false
Recording on edge 2->3 vptr_14(D) ne_expr 0 == true
Recording on edge 2->3 _2 eq_expr 0 == true
Recording on edge 2->3 _2 ne_expr 0 == false
Recording on edge 2->3 _2 lt_expr 0 == false
Recording on edge 2->3 _2 gt_expr 0 == false
Recording on edge 2->3 ownvptr_15(D) ne_expr 0 == false
Recording on edge 2->3 ownvptr_15(D) eq_expr 0 == true
Recording on edge 2->3 ownvptr_15(D) lt_expr 0 == false
Recording on edge 2->3 ownvptr_15(D) gt_expr 0 == false

But at some point I had some simple attempts at using ranger from VN
(when not iterating, and without valueization).

Reply via email to