https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71437
--- Comment #12 from amker at gcc dot gnu.org --- (In reply to amker from comment #10) > (In reply to amker from comment #9) > > Root cause should be in VRP, looks like the iterative algorithm depends on > > order of ssa operands and computes different range. > > Testing a patch, though is kind of a workaround. Turns out a real fix in VRP is possible, and straightforward. Testing.(In reply to Richard Biener from comment #11) > Yes, VRP doesn't thread a jump because of improved iteration order (and > improved ranges). And due to the fact that we can't register multiple > ranges from a single assert expression (both the trivial symbolic one and > one using ranges from the operands). Turns out a real fix in VRP is possible, and straightforward. It's not a case we have to make decision between useful numeric and symbolic range, it's a case we wrongly discard symbolic range info and drop to VARYING. Testing new fix. Thanks.