On Wed, Feb 6, 2013 at 7:27 AM, Bin.Cheng <amker.ch...@gmail.com> wrote: > Hi, > Considering below program, > > extern int d; > > int func(void) > { > int a, b, c; > a = 2; > c = 5; > do > { > b = a + 1; > d = a + c; > a = b; > c = d; > } while (a < 100); > > return 0; > } > > The gimple dump before pass_scev_cprop is like: > > <bb 2>: > > <bb 3>: > # a_1 = PHI <2(2), a_5(4)> > # c_2 = PHI <5(2), c_6(4)> > a_5 = a_1 + 1; > c_6 = a_1 + c_2; > if (a_5 != 100) > goto <bb 4>; > else > goto <bb 5>; > > <bb 4>: > goto <bb 3>; > > <bb 5>: > # d_lsm.4_12 = PHI <c_6(3)> > d = d_lsm.4_12; > return 0; > > When analyzing c_2=PHI<5,c_6> in scev_const_prop, resolver_mixers > returns chrec_dont_know, rather than {5, +, 2, +, 1}. > So two questions about this: > 1. Is it expected to handle higher degree polynomial lie this?
Yes. > If yes, > 2. does it mean we don't use higher degree in misc. loop optimizations in GCC? Yes. > I just started reading this part of code, so please correct if I > missed something. > > Thanks in advance. > > -- > Best Regards.