summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2010-03-04 21:04:38 +0000
committerBob Wilson <bob.wilson@apple.com>2010-03-04 21:04:38 +0000
commitcf6e29a818d8acb4a01519621111879cd7e5b97d (patch)
tree25ade1e076ee852d22da376f2c2a53c4ecab6bc3 /llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
parente62248a79c2a63539278d740ce3c10e7481af32c (diff)
downloadbcm5719-llvm-cf6e29a818d8acb4a01519621111879cd7e5b97d.tar.gz
bcm5719-llvm-cf6e29a818d8acb4a01519621111879cd7e5b97d.zip
pr6480: Don't try producing ld/st-multiple instructions when the address is
an undef value. This is only going to come up for bugpoint-reduced tests -- correct programs will not access memory at undefined addresses -- so it's not worth the effort of doing anything more aggressive. llvm-svn: 97745
Diffstat (limited to 'llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp')
-rw-r--r--llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp b/llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
index 5b4f02d6b75..19f1e3ba12c 100644
--- a/llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
+++ b/llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
@@ -761,6 +761,11 @@ static bool isMemoryOp(const MachineInstr *MI) {
MI->getOperand(0).isUndef())
return false;
+ // Likewise don't mess with references to undefined addresses.
+ if (MI->getNumOperands() > 1 && MI->getOperand(1).isReg() &&
+ MI->getOperand(1).isUndef())
+ return false;
+
int Opcode = MI->getOpcode();
switch (Opcode) {
default: break;
OpenPOWER on IntegriCloud