aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Analysis/MemoryDependenceAnalysis.cpp
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2008-01-30 01:24:05 +0000
committerOwen Anderson <resistor@mac.com>2008-01-30 01:24:05 +0000
commit9a8ff8cd0fe792c7cb894217640f90d2bc1af26e (patch)
tree0a75fd0e04505668362d3c100045a8300c30c3e1 /lib/Analysis/MemoryDependenceAnalysis.cpp
parentb10e0da065fc2c18b5bee9011eb249e223a23108 (diff)
downloadexternal_llvm-9a8ff8cd0fe792c7cb894217640f90d2bc1af26e.zip
external_llvm-9a8ff8cd0fe792c7cb894217640f90d2bc1af26e.tar.gz
external_llvm-9a8ff8cd0fe792c7cb894217640f90d2bc1af26e.tar.bz2
Fix an issue where, under very specific circumstances, memdep could end up dereferencing the end
of one of its internal maps. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46541 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/MemoryDependenceAnalysis.cpp')
-rw-r--r--lib/Analysis/MemoryDependenceAnalysis.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/Analysis/MemoryDependenceAnalysis.cpp b/lib/Analysis/MemoryDependenceAnalysis.cpp
index eea0615..445e16d 100644
--- a/lib/Analysis/MemoryDependenceAnalysis.cpp
+++ b/lib/Analysis/MemoryDependenceAnalysis.cpp
@@ -451,8 +451,6 @@ void MemoryDependenceAnalysis::removeInstruction(Instruction* rem) {
// Figure out the new dep for things that currently depend on rem
Instruction* newDep = NonLocal;
- reverseDep[depGraphLocal[rem].first].erase(rem);
-
for (DenseMap<BasicBlock*, Value*>::iterator DI =
depGraphNonLocal[rem].begin(), DE = depGraphNonLocal[rem].end();
DI != DE; ++DI)
@@ -462,6 +460,8 @@ void MemoryDependenceAnalysis::removeInstruction(Instruction* rem) {
depMapType::iterator depGraphEntry = depGraphLocal.find(rem);
if (depGraphEntry != depGraphLocal.end()) {
+ reverseDep[depGraphLocal[rem].first].erase(rem);
+
if (depGraphEntry->second.first != NonLocal &&
depGraphEntry->second.second) {
// If we have dep info for rem, set them to it