SET_DEF invalidate the def-use chain.
Richard Guenther
richard.guenther@gmail.com
Wed May 18 16:11:00 GMT 2011
On Wed, May 18, 2011 at 5:01 PM, Feng LI <nemokingdom@gmail.com> wrote:
> Hi,
>
> I have the code like:
> a_2 = 5; g1
> b_3 = 6; g2
> d_4 = a_2 + b_3; g3
>
> And I'd like to insert "tmp.globe = a_2" just after the definition of
> a_2 (after g1), so that the code will be:
>
> a_2 = 5; g1
> tmp.globe = a_2; inserted code
> b_3 = 6; g2
> d_4 = a_2 + b_3; g3
>
> This pass is with SSA form, and I write code like:
>
> tree use = make_ssa_name (var, NULL); //create a_11
> /* Set the DEF_P (referred to a_2) to be the DEF of the newly created USE. */
> SET_DEF (def_p, use);
>
> But this will invalidate the original USE-DEF chain, where the a_11 defined
> in g1 will never match the use in g3 of a_2, and the code will look like:
>
> a_11 = 5; g1
> tmp.globe = a_11; inserted code
> b_3 = 6; g2
> d_4 = a_2 + b_3; g3
>
> It seems that I have to update all the use of the original a_2 again and set
> the use to a_11. Is there some solutions that I don't have to update the
> def-use chains manually?
Why do you allocate a new a_11 instead of using a_2?
Richard.
> Thanks,
> Feng
>
More information about the Gcc
mailing list