diff options
author | John Brawn <john.brawn@arm.com> | 2015-06-23 16:02:11 +0000 |
---|---|---|
committer | John Brawn <john.brawn@arm.com> | 2015-06-23 16:02:11 +0000 |
commit | d86e004b7ec3f041b27171c209a8275600f4bc71 (patch) | |
tree | b6feea7f25eea7784ccae7b69d5bd7ddf59d76b1 /llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp | |
parent | 5f7ade26d01f779fcec92d428ca738f8d12bc86a (diff) | |
download | bcm5719-llvm-d86e004b7ec3f041b27171c209a8275600f4bc71.tar.gz bcm5719-llvm-d86e004b7ec3f041b27171c209a8275600f4bc71.zip |
[ARM] ARMLoadStoreOpt::UpdateBaseRegUses should stop on def
When UpdateBaseRegUses sees an instruction that defines the base
register it must stop, as the base register value it is updating is no
longer live. Ideally we would already have seen the register be killed
(which is already checked for), but the kill flags may be inaccurate
and we have to account for this.
Differential Revision: http://reviews.llvm.org/D10566
llvm-svn: 240424
Diffstat (limited to 'llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp b/llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp index 46ff326ba63..5a0d7bfb77f 100644 --- a/llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp +++ b/llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp @@ -444,7 +444,7 @@ ARMLoadStoreOpt::UpdateBaseRegUses(MachineBasicBlock &MBB, return; } - if (MBBI->killsRegister(Base)) + if (MBBI->killsRegister(Base) || MBBI->definesRegister(Base)) // Register got killed. Stop updating. return; } |