On Sunday 30 March 2008 01:30:40 pm Chris Lattner wrote:> On Mar 30, 2008, at 11:17 AM, David Greene wrote: > > I'm forwarding this to llvmdev so it doesn't get lost in the sea of > > commits... > > reg_iterators are independent of SSA or not. The basic issue is that > if you loop over uses or defs of a register, it will return *all* the > uses/defs of that register in the current function. If the value is > SSA form, it is reasonable to say "give me the first def" and expect > it to be the only def. For multiply defined values like physregs, > this is not true, because the reg can have multiple defs.Gotcha. This is exactly what I want. Thanks for the explanation. For non-SSA values, is there some indication of which defs reach which uses? I don't need this right now but I can imagine using it in the future. -Dave
On Mar 30, 2008, at 10:42 PM, David A. Greene wrote:>> SSA form, it is reasonable to say "give me the first def" and expect >> it to be the only def. For multiply defined values like physregs, >> this is not true, because the reg can have multiple defs. > > Gotcha. This is exactly what I want. Thanks for the explanation. > > For non-SSA values, is there some indication of which defs reach which > uses? I don't need this right now but I can imagine using it in the > future.The reg def/kill/dead flags are all that there is. -Chris
On Monday 31 March 2008 00:57, Chris Lattner wrote:> On Mar 30, 2008, at 10:42 PM, David A. Greene wrote: > >> SSA form, it is reasonable to say "give me the first def" and expect > >> it to be the only def. For multiply defined values like physregs, > >> this is not true, because the reg can have multiple defs. > > > > Gotcha. This is exactly what I want. Thanks for the explanation. > > > > For non-SSA values, is there some indication of which defs reach which > > uses? I don't need this right now but I can imagine using it in the > > future. > > The reg def/kill/dead flags are all that there is.I just discovered that def_itterator (and presumably, reg_iterator) doesn't include implicit defs, for example at function calls for caller-save physical registers. Guh. I'm not sure if it should or not, but it's certainly necessary information in some cases. Is this expected behavior, or an oversight? -Dave