[llvm-dev] LSR
Jonas Paulsson via llvm-dev
llvm-dev at lists.llvm.org
Mon Apr 10 06:47:07 PDT 2017
Hi,
I find that LSR is not helping enough on avoiding unfoldable offsets for
SystemZ. When the loop has three stores with unfoldable offsets, LSR
rewrites the IV in a good way. However, if adding another store with a
foldable offset that fits already, LSR fails to rewrite the three stores.
And if I happen to add a too big *positive* offset (the first three were
negative) instead of a foldable one, only the positive gets transformed.
* LSR is not rewriting the IV to have three foldable offsets rather than
one.
* It would actually be preferred in this case to use a second address
register for the offset that is too far away from the others.
Has anyone any idea on how to best handle this? Can LSR "split" an IV to
use an extra register? Or would this need to be done in a target
specific pass?
For a reduced test case for this problem, see
https://bugs.llvm.org//show_bug.cgi?id=32548.
Thanks,
Jonas
More information about the llvm-dev
mailing list