Moving statements from one BB to other BB.

Diego Novillo dnovillo@google.com
Tue Apr 15 18:24:00 GMT 2008


On 4/15/08 1:34 PM, Zdenek Dvorak wrote:
> Hi,
> 
>>>  > To clarify what Richard means, your assertion that "you have updated
>>>  > SSA information" is false.
>>>  > If you had updated the SSA information, the error would not occur :).
>>>  >
>>>  > How exactly are you updating the ssa information?
>>>  >
>>>  > The general way to update SSA for this case would be:
>>>  >
>>>  > For each statement you have moved:
>>>  >   Call update_stmt (t);
>>>  >
>>>  > Then call update_ssa (TODO_update_ssa) (or instead use
>>>  > rewrite_into_loop_closed_ssa if this is a loop pass).
>>>  >
>>>  > If you do not call update_stmt in this case, update_ssa won't actually
>>>  > do anything.
>>>
>>>  actually, it will not do anything even if he calls update_stmt, as the
>>>  statements that he is moving are already in ssa form, so update_stmt
>>>  will not mark anything for renaming.
>>>
>> You are partially right (and right where it matters, that it won't fix
>> the problem)
>> That said, update_stmt on ssa form statements will at least reset the
>> vuse/vdef back to original variables for renaming.
> 
> I don't think so; as long as you do not introduce new vops (which you
> should not by just moving the statements), update_stmt is a no-op on
> vops too (unless something has changed since the last time I needed
> this),

Right.  Moving statements in SSA form needs to introduce name->name 
mappings (eg, as is done during loop unrolling).


Diego.



More information about the Gcc mailing list