mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
bb38b0a59d
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
22 lines
702 B
LLVM
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 }
|