On Tue, Oct 16, 2012 at 09:06:22AM -0700, Xinliang David Li wrote:
> I don't get it. Clobber marks the end of lifetime of a variable so it
> is safe to emit code to really clobber its value -- otherwise how
> would clobber based slot sharing work?
If you at CLOBBER protect the var in the shadow mem as unaccessible, the
thing is where you make it accessible again.
Consider:
int i;
for (i = 0; i < 2; i++)
{
int tmp;
bar ();
baz (&tmp);
bar ();
}
where the first bar () can't possibly access tmp, but the second bar () can.
Now we unroll it and have:
bar ();
baz (&tmp);
bar ();
tmp ={v} {CLOBBER};
bar ();
baz (&tmp);
bar ();
tmp ={v} {CLOBBER};
So, if you want to *mem_to_shadow (&tmp) = 0xff; at {CLOBBER} time, where
and how you would insert *mem_to_shadow (&tmp) = 0; again? In the above
code it would need to go before the second baz (&tmp);, the question is
how you'd find that out...
Jakub