mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-02 00:16:25 +00:00
[MSAN] Add unary FNeg visitor to the MemorySanitizer
Differential Revision: https://reviews.llvm.org/D62909 llvm-svn: 362664
This commit is contained in:
parent
fba10ebb96
commit
5ca7fd5c21
@ -2110,6 +2110,8 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
|
||||
SC.Done(&I);
|
||||
}
|
||||
|
||||
void visitFNeg(UnaryOperator &I) { handleShadowOr(I); }
|
||||
|
||||
// Handle multiplication by constant.
|
||||
//
|
||||
// Handle a special case of multiplication by constant that may have one or
|
||||
|
@ -438,6 +438,22 @@ entry:
|
||||
; CHECK: store i32 %[[SC]], i32* {{.*}}@__msan_retval_tls
|
||||
; CHECK: ret float
|
||||
|
||||
; Check that fneg simply propagates shadow.
|
||||
|
||||
define float @FNeg(float %a) nounwind uwtable readnone sanitize_memory {
|
||||
entry:
|
||||
%c = fneg float %a
|
||||
ret float %c
|
||||
}
|
||||
|
||||
; CHECK-LABEL: @FNeg
|
||||
; CHECK: %[[SA:.*]] = load i32,{{.*}}@__msan_param_tls
|
||||
; CHECK-ORIGINS: %[[SB:.*]] = load i32,{{.*}}@__msan_param_origin_tls
|
||||
; CHECK: = fneg float
|
||||
; CHECK: store i32 %[[SA]], i32* {{.*}}@__msan_retval_tls
|
||||
; CHECK-ORIGINS: store i32{{.*}}@__msan_retval_origin_tls
|
||||
; CHECK: ret float
|
||||
|
||||
; Check that we propagate shadow for x<0, x>=0, etc (i.e. sign bit tests)
|
||||
|
||||
define zeroext i1 @ICmpSLTZero(i32 %x) nounwind uwtable readnone sanitize_memory {
|
||||
|
Loading…
Reference in New Issue
Block a user