[llvm-dev] Potential issue with noalias @malloc and @realloc

Daniel Berlin via llvm-dev llvm-dev at lists.llvm.org
Tue Apr 11 19:19:39 PDT 2017

On Tue, Apr 11, 2017 at 7:02 PM, Daniel Berlin <dberlin at dberlin.org> wrote:

>> > It would require semantic changes to llvm ir to fix this to properly
>> > express object lifetimes that is compatible with all the random babble
>> > standards have written down :)
>> > For now, the only sane solution IMHO, is to say that no alias implies
>> > pointer inequality, regardless of the standards. Because the above can
>> > occur in any situation noalias exists but they are allowed to be pointer
>> > equal (as mentioned, it's trivial to make this happen in TBAA).
>> Just to be clear, you're suggesting that we no longer mark malloc's
>> return value as noalias?
> Actually, i'd suggest just letting it be a bug :)
> That's what other compilers seem to do.
> You could hack around this in clang by using the !alias.scope and !noalias
> form, and not attaching the scope past the lifetime end.
> But we don't optimize that.

(by this i mean it's only used by memdep).

I believe hal also has a noalias instrinsic proposal that would have been
useful here.

But thinking harder, it has the same problem because there is no way to end
the lifetime of something in ssa, and thus, iif  do
a1 = llvm.noalias(a)
b1 = llvm.noalias(b)
if (a1 == b1)
  oh crap

So we can't use it to specify the lifetimes here.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170411/97c9a073/attachment.html>

More information about the llvm-dev mailing list