[llvm-commits] [llvm] r91004 - in /llvm/trunk: lib/Transforms/Scalar/GVN.cpp test/Transforms/GVN/crash-no-aa.ll
Chris Lattner
sabre at nondot.org
Wed Dec 9 16:11:45 PST 2009
Author: lattner
Date: Wed Dec 9 18:11:45 2009
New Revision: 91004
URL: http://llvm.org/viewvc/llvm-project?rev=91004&view=rev
Log:
Fix PR5744, a case where we were getting the pointer size instead of the
value size. This only manifested when memdep inprecisely returns clobber,
which is do to a caching issue in the PR5744 testcase. We can 'efficiently
emulate' this by using '-no-aa'
Added:
llvm/trunk/test/Transforms/GVN/crash-no-aa.ll
Modified:
llvm/trunk/lib/Transforms/Scalar/GVN.cpp
Modified: llvm/trunk/lib/Transforms/Scalar/GVN.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/GVN.cpp?rev=91004&r1=91003&r2=91004&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/GVN.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/GVN.cpp Wed Dec 9 18:11:45 2009
@@ -1084,7 +1084,7 @@
return -1;
Value *StorePtr = DepSI->getPointerOperand();
- uint64_t StoreSize = TD.getTypeSizeInBits(StorePtr->getType());
+ uint64_t StoreSize = TD.getTypeSizeInBits(DepSI->getOperand(0)->getType());
return AnalyzeLoadFromClobberingWrite(LoadTy, LoadPtr,
StorePtr, StoreSize, TD);
}
Added: llvm/trunk/test/Transforms/GVN/crash-no-aa.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/crash-no-aa.ll?rev=91004&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/GVN/crash-no-aa.ll (added)
+++ llvm/trunk/test/Transforms/GVN/crash-no-aa.ll Wed Dec 9 18:11:45 2009
@@ -0,0 +1,16 @@
+; RUN: opt -no-aa -gvn -S %s
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v1
+28:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-unknown-freebsd8.0"
+
+; PR5744
+define i32 @test1({i16, i32} *%P) {
+ %P2 = getelementptr {i16, i32} *%P, i32 0, i32 0
+ store i16 42, i16* %P2
+
+ %P3 = getelementptr {i16, i32} *%P, i32 0, i32 1
+ %V = load i32* %P3
+ ret i32 %V
+}
+
More information about the llvm-commits
mailing list