[PATCH] D65020: [GVN] Do PHI translations across all edges between the load and the unavailable pred.

Florian Hahn via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 19 14:39:43 PDT 2019


fhahn created this revision.
fhahn added reviewers: spatel, reames, efriedma, john.brawn.
Herald added a subscriber: hiraditya.
Herald added a project: LLVM.

Currently we do not properly translate addresses with PHIs if LoadBB !=
LI->getParent(), because PHITranslateAddr expects a direct predecessor as argument,
because it considers all instructions outside of the current block to
not requiring translation.

The amount of cases that trigger this should be very low, as most single
predecessor blocks should be folded into their predecessor by GVN before
we actually start with value numbering. It is still not guaranteed to
happen, so we should do PHI translation along all edges between the
loads' block and the predecessor where we have to place a load.

There are a few test cases showing current limits of the PHI translation, which
could be improved later.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D65020

Files:
  llvm/lib/Transforms/Scalar/GVN.cpp
  llvm/test/Transforms/GVN/PRE/rle.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D65020.210903.patch
Type: text/x-patch
Size: 6739 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190719/9aec814c/attachment.bin>


More information about the llvm-commits mailing list