On Thu, Oct 22, 2015 at 3:24 PM, Nathan Sidwell <nat...@acm.org> wrote: > On 10/22/15 09:17, Jakub Jelinek wrote: >> >> On Thu, Oct 22, 2015 at 09:08:30AM -0400, Nathan Sidwell wrote: > > >> I agree with Richard that it would be better to write more about what kind >> of IL changes are acceptable with IFN_UNIQUE in the IL and what are not. >> E.g. is inlining ok (I'd hope yes)? Is function splitting ok (bet as long >> as all IFN_UNIQUE calls stay in one or the other part, but not both)? > > > Essentially, yes. a set of IFN_UNIQUE form a group which must not be > separated from each other. The set is discovered implicitly by following > the CFG (though I suppose we could add an identifying INT_CST operand or > something equivalent).
I don't see how this is achieved though. To achieve this you'd need data dependences between them, sth like token_1 = IFN_UNIQUE (HEAD); ... token_2 = IFN_UNIQUE (TAIL, token_1); not sure if that is enough (what is "separate from each other"?), for example partial inlining might simply pass token_1 to the split part where only IFN_UNIQUE (TAIL, token_1) would be in. At least the above provides ordering between the two IFN calls (which you achieve by having VDEFs I guess, but then they are also barriers for memory optimizations). Richard. > nathan