This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Moving statements from one BB to other BB.


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.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]