diff options
author | chenglin.bi <chenglin.bi@linaro.org> | 2023-02-10 16:49:56 +0800 |
---|---|---|
committer | chenglin.bi <chenglin.bi@linaro.org> | 2023-02-10 16:52:00 +0800 |
commit | 14dedd9cf596d1e6cfd8d24009393e8b8f1a3dc0 (patch) | |
tree | c3f5111c593fe6a850e0c4d9cc721f64ee9febce /llvm/lib/Object/MachOObjectFile.cpp | |
parent | d9283e79d826d83ec4d124baede855475e99611b (diff) | |
download | llvm-14dedd9cf596d1e6cfd8d24009393e8b8f1a3dc0.zip llvm-14dedd9cf596d1e6cfd8d24009393e8b8f1a3dc0.tar.gz llvm-14dedd9cf596d1e6cfd8d24009393e8b8f1a3dc0.tar.bz2 |
[Reland][LSR] Hoist IVInc to loop header if its all uses are in the loop header
Original code will cause crash when the load/store memory type is structure because isIndexedLoadLegal/isIndexedStore doesn't support struct type.
So we limit the load/store memory type to integer.
Origin commit message:
When the latch block is different from header block, IVInc will be expanded in the latch loop. We can't generate the post index load/store this case.
But if the IVInc only used in the loop, actually we still can use the post index load/store because when exit loop we don't care the last IVInc value.
So, trying to hoist IVInc to help backend to generate more post index load/store.
Fix #53625
Reviewed By: eopXD
Differential Revision: https://reviews.llvm.org/D138636
Diffstat (limited to 'llvm/lib/Object/MachOObjectFile.cpp')
0 files changed, 0 insertions, 0 deletions