> On Thu, 16 Jun 2016, Jan Hubicka wrote: > > > On Thu, 9 Jun 2016, Alexander Monakov wrote: > > + FOR_EACH_VARIABLE (pv) > [snip] > > + i = pv->order; > > + gcc_assert (nodes[i].kind == ORDER_UNDEFINED); > > + nodes[i].kind = pv->definition ? ORDER_VAR : ORDER_VAR_UNDEF; > > + nodes[i].u.v = pv; > > > > order for undefined variables is not computed, so it will be 0. Doesn't > > think overwrite existing entries of nodes array? > > Hm, I've tried the following testcase: > > extern int a, b; > int f() > { > return a+b; > } > > and in the above loop I see pv->order == 2 on the first iteration, > pv->order == 1 on the second. Under what circumstances wouldn't > order be computed?
I see, order is created at a time variable is added to symbol table (not at time when definition is given). So we should have order everywhere. Patch is OK Honza > > Thanks. > Alexander