[PATCH] D20653: LICM: Do not sink or hoist assume intrinsic calls.

Sanjoy Das via llvm-commits llvm-commits at lists.llvm.org
Wed May 25 17:29:28 PDT 2016


sanjoy added a comment.

In http://reviews.llvm.org/D20653#440289, @hfinkel wrote:

> In http://reviews.llvm.org/D20653#440288, @sanjoy wrote:
>
> > In http://reviews.llvm.org/D20653#440282, @hfinkel wrote:
> >
> > > In http://reviews.llvm.org/D20653#440276, @sanjoy wrote:
> > >
> > > > Never mind, I was mistaken;  you can't hoist out a readnone nounwind function out of control flow anyway, and the same logic should hold for assumes.
> > >
> > >
> > > Ah. Because of potential UB?
> >
> >
> > Yes, an implementation of assume could be `void assume(bool cond) { if (!cond) 1/0; }`.
>
>
> Yes, but don't we normally assume that this UB concern does not apply to intrinsics?


I wasn't aware of such a restriction -- can you spell it out explicitly?  We do have intrinsics like patchpoint and statepoint that can execute arbitrary code, so stating that intrinsics have no UB at all is probably not okay.


http://reviews.llvm.org/D20653





More information about the llvm-commits mailing list