mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-19 19:31:50 +00:00
[msan] Make -msan-check-constant-shadow a bit stronger.
Allow (under the experimental flag) non-Instructions to participate in MSan checks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220601 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c498284e46
commit
e376441786
@ -1062,9 +1062,16 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
|
||||
/// UMR warning in runtime if the value is not fully defined.
|
||||
void insertShadowCheck(Value *Val, Instruction *OrigIns) {
|
||||
assert(Val);
|
||||
Instruction *Shadow = dyn_cast_or_null<Instruction>(getShadow(Val));
|
||||
if (!Shadow) return;
|
||||
Instruction *Origin = dyn_cast_or_null<Instruction>(getOrigin(Val));
|
||||
Value *Shadow, *Origin;
|
||||
if (ClCheckConstantShadow) {
|
||||
Shadow = getShadow(Val);
|
||||
if (!Shadow) return;
|
||||
Origin = getOrigin(Val);
|
||||
} else {
|
||||
Shadow = dyn_cast_or_null<Instruction>(getShadow(Val));
|
||||
if (!Shadow) return;
|
||||
Origin = dyn_cast_or_null<Instruction>(getOrigin(Val));
|
||||
}
|
||||
insertShadowCheck(Shadow, Origin, OrigIns);
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,15 @@
|
||||
; RUN: opt < %s -msan -msan-check-constant-shadow=1 -S | FileCheck %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-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
; Test that returning a literal undef from main() triggers an MSan warning.
|
||||
|
||||
define i32 @main() nounwind uwtable sanitize_memory {
|
||||
entry:
|
||||
ret i32 undef
|
||||
}
|
||||
|
||||
; CHECK-LABEL: @main
|
||||
; CHECK: call void @__msan_warning_noreturn
|
||||
; CHECK: ret i32 undef
|
Loading…
x
Reference in New Issue
Block a user