On July 19, 2016 6:19:23 PM GMT+02:00, Jeff Law <l...@redhat.com> wrote: >On 07/14/2016 10:52 PM, Andrew Pinski wrote: >> On Thu, Jul 14, 2016 at 9:45 PM, kugan >> <kugan.vivekanandara...@linaro.org> wrote: >>> >>> Hi, >>> >>> >>> >>> This patch adds a very simple early vrp implementation. This visits >the >>> basic blocks in the dominance order and set the Value Ranges (VR) >for >>> >>> SSA_NAMEs in the scope. Use this VR to discover more VRs. Restore >the old VR >>> once the scope is exit. >> >> >> Why separate out early VRP from tree-vrp? Just a little curious. >I wouldn't mind seeing tree-vrp broken down a little -- it's quite >large >and there's at least 4 distinct things going on in that file. > >1. ASSERT_EXPR handling. > >2. Arithmetic on ranges > >3. Propagation engine setup, callbacks, etc > >4. Range management > >There may be others, but it seems at least some of that ought to be >factored out.
Possibly, but not necessarily because of the proposed pass. I'd like to see lattices and lattice entries becoming classes and the arithmetic on it being templated on it. I do have some preliminary patches implementing a aggressive on-drmand VRP for the use in niter analysis and the Lattice is what makes sharing code difficult (it's a hash-map instead of an array there). Richard. > >Jeff