2019-10-03 03:53:19 +08:00
|
|
|
; Make sure MSan handles llvm.launder.invariant.group correctly.
|
|
|
|
|
|
|
|
; RUN: opt < %s -msan -msan-kernel=1 -O1 -S | FileCheck -check-prefixes=CHECK %s
|
|
|
|
; RUN: opt < %s -msan -O1 -S | FileCheck -check-prefixes=CHECK %s
|
|
|
|
|
|
|
|
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
|
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
|
|
|
|
@flag = dso_local local_unnamed_addr global i8 0, align 1
|
|
|
|
|
|
|
|
define dso_local i8* @f(i8* %x) local_unnamed_addr #0 {
|
|
|
|
entry:
|
|
|
|
%0 = call i8* @llvm.strip.invariant.group.p0i8(i8* %x)
|
|
|
|
ret i8* %0
|
|
|
|
}
|
|
|
|
|
[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_noreturn
|
2019-10-03 03:53:19 +08:00
|
|
|
|
|
|
|
declare i8* @llvm.strip.invariant.group.p0i8(i8*)
|
|
|
|
|
|
|
|
attributes #0 = { sanitize_memory uwtable }
|