From c6b05b86edbdc0d00e54145a115135c84cbf8402 Mon Sep 17 00:00:00 2001 From: Aldy Hernandez Date: Tue, 31 Mar 2020 16:19:37 +0200 Subject: Intersect known global ranges of LHS in gimple_ranger::range_of_call. --- gcc/ssa-range.cc | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'gcc') diff --git a/gcc/ssa-range.cc b/gcc/ssa-range.cc index e8fe078..64cce18 100644 --- a/gcc/ssa-range.cc +++ b/gcc/ssa-range.cc @@ -212,15 +212,23 @@ bool gimple_ranger::range_of_call (irange &r, gcall *call) { tree type = gimple_call_return_type (call); + tree lhs = gimple_call_lhs (call); + if (!irange::supports_type_p (type)) return false; if (gimple_call_nonnull_result_p (call)) + r = range_nonzero (type); + else + r.set_varying (type); + + // If there is a lHS, intersect that with what is known. + if (lhs) { - r = range_nonzero (type); - return true; + value_range def; + def = gimple_range_global (lhs); + r.intersect (def); } - r.set_varying (type); return true; } -- cgit v1.1