mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-26 05:32:25 +00:00
[msan] Propagate origin for insertvalue, extractvalue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194374 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
40f689851f
commit
4590b8c090
@ -2059,7 +2059,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
|
||||
Value *ResShadow = IRB.CreateExtractValue(AggShadow, I.getIndices());
|
||||
DEBUG(dbgs() << " ResShadow: " << *ResShadow << "\n");
|
||||
setShadow(&I, ResShadow);
|
||||
setOrigin(&I, getCleanOrigin());
|
||||
setOriginForNaryOp(I);
|
||||
}
|
||||
|
||||
void visitInsertValueInst(InsertValueInst &I) {
|
||||
@ -2072,7 +2072,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
|
||||
Value *Res = IRB.CreateInsertValue(AggShadow, InsShadow, I.getIndices());
|
||||
DEBUG(dbgs() << " Res: " << *Res << "\n");
|
||||
setShadow(&I, Res);
|
||||
setOrigin(&I, getCleanOrigin());
|
||||
setOriginForNaryOp(I);
|
||||
}
|
||||
|
||||
void dumpInst(Instruction &I) {
|
||||
|
@ -775,3 +775,29 @@ entry:
|
||||
; CHECK-AA: call void @llvm.memcpy.p0i8.p0i8.i64(i8* {{.*}}, i8* {{.*}}, i64 2, i32 2, i1 false)
|
||||
; CHECK-AA: ret i16
|
||||
|
||||
|
||||
; Test origin propagation for insertvalue
|
||||
|
||||
define { i64, i32 } @make_pair_64_32(i64 %x, i32 %y) sanitize_memory {
|
||||
entry:
|
||||
%a = insertvalue { i64, i32 } undef, i64 %x, 0
|
||||
%b = insertvalue { i64, i32 } %a, i32 %y, 1
|
||||
ret { i64, i32 } %b
|
||||
}
|
||||
|
||||
; CHECK-ORIGINS: @make_pair_64_32
|
||||
; First element shadow
|
||||
; CHECK-ORIGINS: insertvalue { i64, i32 } { i64 -1, i32 -1 }, i64 {{.*}}, 0
|
||||
; First element origin
|
||||
; CHECK-ORIGINS: icmp ne i64
|
||||
; CHECK-ORIGINS: select i1
|
||||
; First element app value
|
||||
; CHECK-ORIGINS: insertvalue { i64, i32 } undef, i64 {{.*}}, 0
|
||||
; Second element shadow
|
||||
; CHECK-ORIGINS: insertvalue { i64, i32 } {{.*}}, i32 {{.*}}, 1
|
||||
; Second element origin
|
||||
; CHECK-ORIGINS: icmp ne i32
|
||||
; CHECK-ORIGINS: select i1
|
||||
; Second element app value
|
||||
; CHECK-ORIGINS: insertvalue { i64, i32 } {{.*}}, i32 {{.*}}, 1
|
||||
; CHECK-ORIGINS: ret { i64, i32 }
|
||||
|
Loading…
Reference in New Issue
Block a user