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. Diego, the bsi iterators do not update the statements for you though it is not clear if this is a bug or not. The bsi iterators call update_modified_stmts, which says: /* Mark statement T as modified, and update it. */ static inline void update_modified_stmts (tree t) However, this only calls update_stmt_if_modified (IE it does not mark the statement as modified and update it, as it claims to). Sandeep, it should also suffice to call mark_stmt_modified *before* moving the statements (since the above routine should then update them). On Mon, Apr 14, 2008 at 7:10 AM, Richard Guenther <[EMAIL PROTECTED]> wrote: > On Mon, Apr 14, 2008 at 12:54 PM, Sandeep Maram <[EMAIL PROTECTED]> wrote: > > Hi, > > > > I have transferred all the statements of one BB( header of one loop) > > to another BB. After that I have updated SSA information too. > > But I get this error- > > > > definition in block 6 does not dominate use in block 3 > > for SSA_NAME: i_25 in statement: > > This is the problem. > > > > > # VUSE <a_18> > > D.1189_10 = a[i_25]; > > loop.c:8: internal compiler error: verify_ssa failed > > > > Can any one please tell me what is the problem? > > > > Thanks, > > Sandeep. > > >