xref: /llvm-project/llvm/test/Instrumentation/MemorySanitizer/msan_llvm_is_constant.ll (revision fe7f5f9126cea9ceba703d5bd07b766181f2bd72)
1; Make sure MSan doesn't insert shadow checks for @llvm.is.constant.* arguments.
2
3; RUN: opt < %s -msan-kernel=1 -S -passes=msan 2>&1 | FileCheck -check-prefixes=CHECK %s
4; RUN: opt < %s -S -passes=msan 2>&1 | FileCheck -check-prefixes=CHECK %s
5
6target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
7target triple = "x86_64-unknown-linux-gnu"
8
9; Function Attrs: nounwind readnone uwtable
10define dso_local i32 @bar(i32 %v) local_unnamed_addr sanitize_memory {
11entry:
12  %0 = tail call i1 @llvm.is.constant.i32(i32 %v)
13  %1 = zext i1 %0 to i32
14  ret i32 %1
15}
16
17; CHECK-LABEL: bar
18; CHECK-NOT: call void @__msan_warning_with_origin
19
20; Function Attrs: nounwind readnone
21declare i1 @llvm.is.constant.i32(i32)
22