Moving statements from one BB to other BB.
Daniel Berlin
dberlin@dberlin.org
Tue Apr 15 05:04:00 GMT 2008
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
<richard.guenther@gmail.com> wrote:
> On Mon, Apr 14, 2008 at 12:54 PM, Sandeep Maram <sandeep244@gmail.com> 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.
> >
>
More information about the Gcc
mailing list