[llvm-commits] CVS: llvm/lib/Analysis/AliasSetTracker.cpp
Chris Lattner
lattner at cs.uiuc.edu
Mon Jun 26 12:21:00 PDT 2006
Changes in directory llvm/lib/Analysis:
AliasSetTracker.cpp updated: 1.37 -> 1.38
---
Log message:
Fix a stale pointer issue that caused 300.twolf to fail to build on zion
last night.
---
Diffs of the changes: (+11 -0)
AliasSetTracker.cpp | 11 +++++++++++
1 files changed, 11 insertions(+)
Index: llvm/lib/Analysis/AliasSetTracker.cpp
diff -u llvm/lib/Analysis/AliasSetTracker.cpp:1.37 llvm/lib/Analysis/AliasSetTracker.cpp:1.38
--- llvm/lib/Analysis/AliasSetTracker.cpp:1.37 Tue Jan 3 00:05:22 2006
+++ llvm/lib/Analysis/AliasSetTracker.cpp Mon Jun 26 14:20:48 2006
@@ -435,6 +435,17 @@
// Notify the alias analysis implementation that this value is gone.
AA.deleteValue(PtrVal);
+ // If this is a call instruction, remove the callsite from the appropriate
+ // AliasSet.
+ CallSite CS = CallSite::get(PtrVal);
+ if (CS.getInstruction()) {
+ Function *F = CS.getCalledFunction();
+ if (!F || !AA.doesNotAccessMemory(F)) {
+ if (AliasSet *AS = findAliasSetForCallSite(CS))
+ AS->removeCallSite(CS);
+ }
+ }
+
// First, look up the PointerRec for this pointer.
hash_map<Value*, AliasSet::PointerRec>::iterator I = PointerMap.find(PtrVal);
if (I == PointerMap.end()) return; // Noop
More information about the llvm-commits
mailing list