On Fri, Sep 23, 2016 at 10:58 AM, kugan <kugan.vivekanandara...@linaro.org> wrote: > Hi Richard, > > Thanks for the review. > > On 23/09/16 17:19, Richard Biener wrote: >> >> On Fri, Sep 23, 2016 at 12:24 AM, kugan >> <kugan.vivekanandara...@linaro.org> wrote: >>> >>> Hi, >>> As Richard pointed out in PR77677, TREE_OVERFLOW is not cleared in >>> IPA-VRP. >>> There are three places in which we set value_range: >>> >>> >>> 1. When value ranges are obtained from SSA_NAME with get_range_info with >>> wide_int_to_tree. In this case we will not have TREE_OVERFLOW set. >>> >>> 2. When we vrp_meet/vrp_intersect_ranges two ranges. It does >>> int_const_binop >>> but AFAIK this does not set TREE_OVERFLOW. >>> >>> 3. When we create range from constant. This is the problem bit and we >>> need >>> to clear TREE_OVERFLOW here. >>> >>> Attached patch clears the TREE_OVERFLOW in 3rd case. Bootstrap and >>> regression testing are ongoing. Is this OK if there is no regression. >> >> >> Ok. Though it would be nice to drop it at the source (that is, the point >> we >> initialize the IPA-CP lattice and its modifications). > > > In ipa_compute_jump_function_for_egde, value_range lattice is not set for > constants as this information is already there in IPA_JF_CONSTANT. That is, > we initialize only when we get it from get_range_info (SSA_NAMES); others > are set to unknown. Though we can set it at this point, it can be > inefficient in terms of streaming in/out this data. While propagating we get > it from IPA_JF_CONSTANT.
Yes, I meant we should avoid TREE_OVERFLOW on IPA_JF_CONSTANT in the first place. Richard. > > Thanks, > Kugan > > >> Richard. >> >>> Thanks, >>> Kugan >>> >>> >>> gcc/ChangeLog: >>> >>> 2016-09-23 Kugan Vivekanandarajah <kug...@linaro.org> >>> >>> PR ipa/77677 >>> * ipa-cp.c (propagate_vr_accross_jump_function):Drop >>> TREE_OVERFLOW >>> from constant while creating value range. >>> >>> gcc/testsuite/ChangeLog: >>> >>> 2016-09-23 Kugan Vivekanandarajah <kug...@linaro.org> >>> >>> PR ipa/77677 >>> * gcc.dg/torture/pr77677.c: New test.