Richard Biener <rguent...@suse.de> writes: > AFAIU this special instruction is only supposed to prevent > code motion (of stack memory accesses?) across this instruction? > I'd say a > > (may_clobber (mem:BLK (reg:DI 1 1))) > > might be more to the point? I've used "may_clobber" which doesn't > exist since I'm not sure whether a clobber is considered a kill. > The docs say "Represents the storing or possible storing of an > unpredictable..." - what is it? Storing or possible storing?
I'd also understood it to be either. As in, it is a may-clobber that can be used for must-clobber. Alternatively: the value stored is unpredictable, and can therefore be the same as the current value. I think the main difference between: (clobber (mem:BLK …)) and (set (mem:BLK …) (unspec:BLK …)) is that the latter must happen for correctness (unless something that understands the unspec proves otherwise) whereas a clobber can validly be dropped. So for something like stack_tie, a set seems more correct than a clobber. Thanks, Richard