1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-02-01 05:01:59 +01:00
llvm-mirror/test/Instrumentation/MemorySanitizer/msan_llvm_strip_invariant.ll
Gui Andrade bb38b0a59d [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-15 17:49:18 -07:00

22 lines
702 B
LLVM

; 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
}
; CHECK-NOT: call void @__msan_warning_with_origin_noreturn
declare i8* @llvm.strip.invariant.group.p0i8(i8*)
attributes #0 = { sanitize_memory uwtable }