summaryrefslogtreecommitdiff
path: root/lib/Analysis/MemoryDependenceAnalysis.cpp
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2011-06-04 06:48:50 +0000
committerDan Gohman <gohman@apple.com>2011-06-04 06:48:50 +0000
commita3351a0e5db0b5b2c53920f2f15d3e862fecfad3 (patch)
treee3950ad2badcb5f73f54fa0aff620e158e13bc2a /lib/Analysis/MemoryDependenceAnalysis.cpp
parentbaddf6c8b07afd48c145e08d8e5b524b1012deff (diff)
downloadllvm-a3351a0e5db0b5b2c53920f2f15d3e862fecfad3.tar.gz
llvm-a3351a0e5db0b5b2c53920f2f15d3e862fecfad3.tar.bz2
llvm-a3351a0e5db0b5b2c53920f2f15d3e862fecfad3.tar.xz
Disable the main feature of 130180, the elimination of loads that are
redundant with partially-aliasing loads. When computing what portion of a clobbering load value is needed, it doesn't consider phi-translation which may have occurred between the clobbing load and the redundant load. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132631 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/MemoryDependenceAnalysis.cpp')
-rw-r--r--lib/Analysis/MemoryDependenceAnalysis.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Analysis/MemoryDependenceAnalysis.cpp b/lib/Analysis/MemoryDependenceAnalysis.cpp
index a412425770..5f640c01d2 100644
--- a/lib/Analysis/MemoryDependenceAnalysis.cpp
+++ b/lib/Analysis/MemoryDependenceAnalysis.cpp
@@ -374,10 +374,16 @@ getPointerDependencyFrom(const AliasAnalysis::Location &MemLoc, bool isLoad,
if (R == AliasAnalysis::MustAlias)
return MemDepResult::getDef(Inst);
+#if 0 // FIXME: Temporarily disabled. GVN is cleverly rewriting loads
+ // in terms of clobbering loads, but since it does this by looking
+ // at the clobbering load directly, it doesn't know about any
+ // phi translation that may have happened along the way.
+
// If we have a partial alias, then return this as a clobber for the
// client to handle.
if (R == AliasAnalysis::PartialAlias)
return MemDepResult::getClobber(Inst);
+#endif
// Random may-alias loads don't depend on each other without a
// dependence.