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