summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-03-24 04:22:04 +0000
committerChris Lattner <sabre@nondot.org>2005-03-24 04:22:04 +0000
commit19d7f2883d9cccce424ba605d1c330e2f1a0bd1c (patch)
tree0bf9c9eff20d1e775eba764322e99d96afa89b2a /llvm/lib/Analysis
parentf0d919ece96c9cae1e6bdb7d6f7d2bd5a74908f7 (diff)
downloadbcm5719-llvm-19d7f2883d9cccce424ba605d1c330e2f1a0bd1c.tar.gz
bcm5719-llvm-19d7f2883d9cccce424ba605d1c330e2f1a0bd1c.zip
Fix a crash while promoting a value out of a loop from a global variable
when using ds-aa llvm-svn: 20802
Diffstat (limited to 'llvm/lib/Analysis')
-rw-r--r--llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp11
-rw-r--r--llvm/lib/Analysis/DataStructure/TopDownClosure.cpp11
2 files changed, 20 insertions, 2 deletions
diff --git a/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp b/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp
index 640463db301..5dcaa31dca2 100644
--- a/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp
+++ b/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp
@@ -527,5 +527,14 @@ void BUDataStructures::copyValue(Value *From, Value *To) {
return;
}
- assert(!isa<GlobalVariable>(From) && "Do not know how to copy GV's yet!");
+ if (const Function *F = getFnForValue(To)) {
+ DSGraph &G = getDSGraph(*F);
+ G.getScalarMap().copyScalarIfExists(From, To);
+ return;
+ }
+
+ std::cerr << *From;
+ std::cerr << *To;
+ assert(0 && "Do not know how to copy this yet!");
+ abort();
}
diff --git a/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp b/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp
index 45b2f2b4d2d..e44cea1d8e1 100644
--- a/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp
+++ b/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp
@@ -468,5 +468,14 @@ void TDDataStructures::copyValue(Value *From, Value *To) {
return;
}
- assert(!isa<GlobalVariable>(From) && "Do not know how to copy GV's yet!");
+ if (const Function *F = getFnForValue(To)) {
+ DSGraph &G = getDSGraph(*F);
+ G.getScalarMap().copyScalarIfExists(From, To);
+ return;
+ }
+
+ std::cerr << *From;
+ std::cerr << *To;
+ assert(0 && "Do not know how to copy this yet!");
+ abort();
}
OpenPOWER on IntegriCloud