2018-12-31 17:42:23 +08:00
|
|
|
; Make sure MSan doesn't insert shadow checks for @llvm.is.constant.* arguments.
|
|
|
|
|
2019-01-16 19:14:07 +08:00
|
|
|
; RUN: opt < %s -msan-kernel=1 -S -passes=msan 2>&1 | FileCheck \
|
|
|
|
; RUN: -check-prefixes=CHECK %s
|
2018-12-31 17:42:23 +08:00
|
|
|
; RUN: opt < %s -msan -msan-kernel=1 -S | FileCheck -check-prefixes=CHECK %s
|
2019-01-16 19:14:07 +08:00
|
|
|
; RUN: opt < %s -S -passes=msan 2>&1 | FileCheck -check-prefixes=CHECK %s
|
2018-12-31 17:42:23 +08:00
|
|
|
; RUN: opt < %s -msan -S | FileCheck -check-prefixes=CHECK %s
|
|
|
|
|
|
|
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
|
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
|
|
|
|
; Function Attrs: nounwind readnone uwtable
|
|
|
|
define dso_local i32 @bar(i32 %v) local_unnamed_addr sanitize_memory {
|
|
|
|
entry:
|
|
|
|
%0 = tail call i1 @llvm.is.constant.i32(i32 %v)
|
|
|
|
%1 = zext i1 %0 to i32
|
|
|
|
ret i32 %1
|
|
|
|
}
|
|
|
|
|
|
|
|
; CHECK-LABEL: bar
|
[MSAN] Pass Origin by parameter to __msan_warning functions
Summary:
Normally, the Origin is passed over TLS, which seems like it introduces unnecessary overhead. It's in the (extremely) cold path though, so the only overhead is in code size.
But with eager-checks, calls to __msan_warning functions are extremely common, so this becomes a useful optimization.
This can save ~5% code size.
Reviewers: eugenis, vitalybuka
Reviewed By: eugenis, vitalybuka
Subscribers: hiraditya, #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D81700
2020-06-16 06:17:00 +08:00
|
|
|
; CHECK-NOT: call void @__msan_warning_with_origin
|
2018-12-31 17:42:23 +08:00
|
|
|
|
|
|
|
; Function Attrs: nounwind readnone
|
|
|
|
declare i1 @llvm.is.constant.i32(i32)
|