[llvm-commits] [llvm] r82411 - in /llvm/trunk: lib/Analysis/MemoryDependenceAnalysis.cpp test/Transforms/GVN/rle.ll
Chris Lattner
sabre at nondot.org
Sun Sep 20 15:44:27 PDT 2009
Author: lattner
Date: Sun Sep 20 17:44:26 2009
New Revision: 82411
URL: http://llvm.org/viewvc/llvm-project?rev=82411&view=rev
Log:
Revert r82404, it is causing a bootstrap miscompile. This is very very
scary, as it indicates a lurking bug. yay.
Modified:
llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp
llvm/trunk/test/Transforms/GVN/rle.ll
Modified: llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp?rev=82411&r1=82410&r2=82411&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp (original)
+++ llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp Sun Sep 20 17:44:26 2009
@@ -521,13 +521,6 @@
const Type *EltTy = cast<PointerType>(Pointer->getType())->getElementType();
uint64_t PointeeSize = AA->getTypeStoreSize(EltTy);
- // If Pointer is a bitcast instruction, chomp through to the pointee since
- // they are must alias. This increases the effectiveness of caching by
- // finding more equivalences, avoids having to phi translate the bitcast, and
- // avoids conflicts where we are looking for two "different" values in the
- // same block when they are really just must aliases.
- Pointer = Pointer->stripPointerCasts();
-
// This is the set of blocks we've inspected, and the pointer we consider in
// each block. Because of critical edges, we currently bail out if querying
// a block with multiple different pointers. This can happen during PHI
@@ -667,6 +660,7 @@
SmallVectorImpl<NonLocalDepEntry> &Result,
DenseMap<BasicBlock*, Value*> &Visited,
bool SkipFirstBlock) {
+
// Look up the cached info for Pointer.
ValueIsLoadPair CacheKey(Pointer, isLoad);
@@ -799,13 +793,6 @@
BasicBlock *Pred = *PI;
Value *PredPtr = PtrPHI->getIncomingValueForBlock(Pred);
- // If Pointer is a bitcast instruction, chomp through to the pointee since
- // they are must alias. This increases the effectiveness of caching by
- // finding more equivalences, avoids having to phi translate the bitcast, and
- // avoids conflicts where we are looking for two "different" values in the
- // same block when they are really just must aliases.
- PredPtr = PredPtr->stripPointerCasts();
-
// Check to see if we have already visited this pred block with another
// pointer. If so, we can't do this lookup. This failure can occur
// with PHI translation when a critical edge exists and the PHI node in
Modified: llvm/trunk/test/Transforms/GVN/rle.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/rle.ll?rev=82411&r1=82410&r2=82411&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/GVN/rle.ll (original)
+++ llvm/trunk/test/Transforms/GVN/rle.ll Sun Sep 20 17:44:26 2009
@@ -141,32 +141,6 @@
; CHECK: ret i8 %A
}
-;; non-local i32/float -> i8 load forwarding. This also tests that the "P3"
-;; bitcast equivalence can be properly phi translated.
-define i8 @coerce_mustalias_nonlocal1(i32* %P, i1 %cond) {
- %P2 = bitcast i32* %P to float*
- br i1 %cond, label %T, label %F
-T:
- store i32 42, i32* %P
- br label %Cont
-
-F:
- store float 1.0, float* %P2
- br label %Cont
-
-Cont:
- %P3 = bitcast i32* %P to i8*
- %A = load i8* %P3
- ret i8 %A
-
-; CHECK: @coerce_mustalias_nonlocal1
-; CHECK: Cont:
-; CHECK: %A = phi i8 [
-; CHECK-NOT: load
-; CHECK: ret i8 %A
-}
-
-
;; non-local i32 -> i8 partial redundancy load forwarding.
define i8 @coerce_mustalias_pre0(i32* %P, i1 %cond) {
%P3 = bitcast i32* %P to i8*
More information about the llvm-commits
mailing list