[PATCH] D115274: [IR][RFC] Memory region declaration intrinsic

Johannes Doerfert via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 4 16:22:35 PST 2022


jdoerfert added a comment.

I still believe this should be a generic assume.passthrough intrinsic with an operand bundle for the specific use case.
I briefly described that here: https://lists.llvm.org/pipermail/llvm-dev/2021-December/154281.html

The intrinsic would also be speculatable, readnone, all the good stuff. 
The resulting value has all the annotated properties *or* is poison. 
This matches attributes on call sites and as such we can retain attributes from call sites:

  call @foo(i8* %p, i8* align(16) nonnull %p);

will become

  %arg1 = llvm.assume.passthrough(%p) ["align"(16), "nonnull"]
  call @foo(i8* %p, i8* align(16) nonnull %arg1);

just before inlining. This way the information is retained properly.
Note that we should already retain it with `llvm.assume` if there is a noundef as well.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D115274/new/

https://reviews.llvm.org/D115274



More information about the llvm-commits mailing list