mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-05 14:34:55 +00:00
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' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91004 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3728e96a6c
commit
16f244e982
@ -1084,7 +1084,7 @@ static int AnalyzeLoadFromClobberingStore(const Type *LoadTy, Value *LoadPtr,
|
||||
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);
|
||||
}
|
||||
|
16
test/Transforms/GVN/crash-no-aa.ll
Normal file
16
test/Transforms/GVN/crash-no-aa.ll
Normal file
@ -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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user