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.
>  >
>

Reply via email to