summaryrefslogtreecommitdiff
path: root/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-08-04 02:45:02 +0000
committerChris Lattner <sabre@nondot.org>2007-08-04 02:45:02 +0000
commitc69e4915750ac715fced8d63b9601899e8a4d0ae (patch)
treedd6a8354b8c96de5fb5e4ab27fbc740802a541c7 /lib/Transforms/Utils/PromoteMemoryToRegister.cpp
parent4f63e76cda86b676e4f0e31fd35b812e2f8dd57f (diff)
downloadllvm-c69e4915750ac715fced8d63b9601899e8a4d0ae.tar.gz
llvm-c69e4915750ac715fced8d63b9601899e8a4d0ae.tar.bz2
llvm-c69e4915750ac715fced8d63b9601899e8a4d0ae.tar.xz
fix a logic bug where we wouldn't promote single store allocas if the
stored value was a non-instruction value. Doh. This increase the # single store allocas from 8982 to 9026, and speeds up mem2reg on the testcase in PR1432 from 2.17 to 2.13s. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40813 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/PromoteMemoryToRegister.cpp')
-rw-r--r--lib/Transforms/Utils/PromoteMemoryToRegister.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/Transforms/Utils/PromoteMemoryToRegister.cpp b/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
index 1106c6ea16..7520b22749 100644
--- a/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
+++ b/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
@@ -557,7 +557,7 @@ void PromoteMem2Reg::RewriteSingleStoreAlloca(AllocaInst *AI,
// do so now. We can't handle the case where the store doesn't dominate a
// block because there may be a path between the store and the use, but we
// may need to insert phi nodes to handle dominance properly.
- if (StoringGlobalVal || !dominates(OnlyStore->getParent(), UseBlock))
+ if (!StoringGlobalVal && !dominates(OnlyStore->getParent(), UseBlock))
continue;
// If the use and store are in the same block, do a quick scan to
@@ -569,7 +569,7 @@ void PromoteMem2Reg::RewriteSingleStoreAlloca(AllocaInst *AI,
break;
}
if (&*I != OnlyStore)
- break; // Do not handle this alloca.
+ continue; // Do not promote the uses of this in this block.
}
// Otherwise, if this is a different block or if all uses happen