On 3/8/06, Diego Novillo <[EMAIL PROTECTED]> wrote: > On 03/08/06 11:54, Richard Guenther wrote: > > > i.e. we see that for a = b it's a killing def, while the assignment to > > a.x[2] is only > > partial. So what will we have in mem-ssa for the killing a = b and > > the partial def? > > > Right now, nothing. Memory SSA gives you an identical IL in this case. > > Removing V_MUST_DEFs is orthogonal to memory SSA. Taking your example, > what wouldn't you be able to do if the code was: > > # a_3 = VDEF <a_2> > # VUSE <b_1> > a = b; > > # VUSE <b_1> > D.1284_4 = b.x[2]; > > # a_5 = VDEF <a_3> > a.x[2] = D.1284_4; > > > I'm trying to look for cases where replacing V_MUST_DEF with V_MAY_DEF > would cause the optimizers to take over-conservative decisions, and > those over-conservative decisions are *impossible* to fix without the > notion of V_MUST_DEF.
I think there are none. If we got the above, we'll have to make sure that for a = b it is a killing def ourselves rather than just checking for a single V_MUST_DEF. Not a big deal, if any. Richard.