[PATCH] D26127: [MemorySSA] Repair AccessList invariants after insertion of new MemoryUseOrDef.

bryant via llvm-commits llvm-commits at lists.llvm.org
Sun Oct 30 03:03:58 PDT 2016


bryant created this revision.
bryant added reviewers: dberlin, george.burgess.iv.
bryant added a subscriber: llvm-commits.
bryant set the repository for this revision to rL LLVM.

An invariant of AccessLists is that the defining access of a Use or Def is the nearest preceding Def node. For instance, within a BasicBlock:

  0 = MemoryDef(liveOnEntry)
  1 = MemoryDef(0)
  2 = MemoryUse(n)
  3 = MemoryDef(m)

1 is the nearest parent Def of 2 and 3, and m and n must be 1.

This patch simplifies the interfaces of createMemoryAccessBefore/After, and augments them to maintain this invariant.

Additionally, when inserting a new Def after an existing Def, there is currently no (clean) way to update the users of the old Def to use the new Def. So createDefiningAccess now permits the option of updating the users.


Repository:
  rL LLVM

https://reviews.llvm.org/D26127

Files:
  include/llvm/Transforms/Utils/MemorySSA.h
  lib/Transforms/Utils/MemorySSA.cpp
  unittests/Transforms/Utils/MemorySSA.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D26127.76330.patch
Type: text/x-patch
Size: 7136 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161030/8f33a52a/attachment.bin>


More information about the llvm-commits mailing list