Mark invariant.group.barrier as inaccessiblememonly
authorPiotr Padlewski <piotr.padlewski@gmail.com>
Wed, 2 May 2018 08:22:07 +0000 (08:22 +0000)
committerPiotr Padlewski <piotr.padlewski@gmail.com>
Wed, 2 May 2018 08:22:07 +0000 (08:22 +0000)
commitf801205e4835598da60fcb4f5721ccd0cc323a32
tree2b10830fabcec96928303162648b9a98e0136348
parent1c5a05f32cf0095e9670d30396f24bb58b995cc5
Mark invariant.group.barrier as inaccessiblememonly

It turned out that readonly argmemonly is not enough.

  store 42, %p
  %b = barrier(%p)
  store 43, %b
the first store is dead, but because barrier was marked as
reading argument memory, it was considered alive. With
inaccessiblememonly it doesn't read the argument, but
it also can't be CSEd.

based on: https://reviews.llvm.org/D32006

llvm-svn: 331338
llvm/include/llvm/IR/Intrinsics.td
llvm/test/Analysis/MemorySSA/invariant-groups.ll
llvm/test/Other/invariant.group.barrier.ll