[PATCH] D26930: Teach optimizer that pthread_self does not trap. It can be speculatively executed.

Xin Tong via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Nov 26 08:54:27 PST 2016


trentxintong added a comment.

In https://reviews.llvm.org/D26930#604260, @hfinkel wrote:

> In https://reviews.llvm.org/D26930#602002, @trentxintong wrote:
>
> > In https://reviews.llvm.org/D26930#601975, @hfinkel wrote:
> >
> > > In https://reviews.llvm.org/D26930#601972, @trentxintong wrote:
> > >
> > > > I, too, hope readnone+nounwind functions can be speculatively executed, but it does not seem to be the case =). Thats why i think we need to use TLI to teach the optimizer about functions which can.
> > >
> > >
> > >
> > >
> > > In https://reviews.llvm.org/D26930#601971, @joerg wrote:
> > >
> > > > Your example is UB.
> > >
> > >
> > > You're both right. We cannot speculate functions that might have UB. Thus, we cannot speculate general external functions (even if they're readnone, etc.). See also: https://reviews.llvm.org/D20116 where we're discussing adding a separate attribute for this.
> >
> >
> > @hfinkel I see, do you think it would be a good to add "speculatable" attribute to pthread_self in FuncAttr once the patch for the attribute lands so that it can be hoisted ? or we can use TLI in isSafeToSpeculativelyExecute function.
>
>
> I'd prefer just to use the attribute.


@hfinkel Ok, SGTM. Thanks for the pointer.


Repository:
  rL LLVM

https://reviews.llvm.org/D26930





More information about the llvm-commits mailing list