Hi,
Richard Sandiford <richard.sandif...@arm.com> writes: > 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 a lot for all your helpful comments! BR, Jeff (Jiufu Guo) > > Thanks, > Richard