// Get the range of the argument on its edge.
src.get_phi_operand (arg_range, arg, e);
- // Likewise, if the incoming PHI argument is equivalent to this
- // PHI definition, it provides no new info. Accumulate these ranges
- // in case all arguments are equivalences.
- if (src.query ()->query_relation (e, arg, phi_def, false) == EQ_EXPR)
- {
- single_arg = arg;
- equiv_range.union_(arg_range);
- continue;
- }
-
if (!arg_range.undefined_p ())
{
// Register potential dependencies for stale value tracking.
- r.union_ (arg_range);
+ // Likewise, if the incoming PHI argument is equivalent to this
+ // PHI definition, it provides no new info. Accumulate these ranges
+ // in case all arguments are equivalences.
+ if (src.query ()->query_relation (e, arg, phi_def, false) == EQ_EXPR)
+ equiv_range.union_(arg_range);
+ else
+ r.union_ (arg_range);
+
if (gimple_range_ssa_p (arg) && src.gori ())
src.gori ()->register_dependency (phi_def, arg);
// If all arguments were equivalences, use the equivalence ranges as no
// arguments were processed.
- if (!seen_arg)
+ if (r.undefined_p () && !equiv_range.undefined_p ())
r = equiv_range;
// If the PHI boils down to a single effective argument, look at it.