18000f228SVitaly Buka; Verify that calls with !nosanitize are not instrumented by MSan. 2b39a97c8SPhilip Pfaffe; RUN: opt < %s -S -passes=msan 2>&1 | FileCheck %s 3b39a97c8SPhilip Pfaffe; RUN: opt < %s -msan-track-origins=1 -S -passes=msan 2>&1 | FileCheck %s 48000f228SVitaly Bukatarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 58000f228SVitaly Bukatarget triple = "x86_64-unknown-linux-gnu" 68000f228SVitaly Buka 78000f228SVitaly Bukadeclare void @bar(i32 %x) 88000f228SVitaly Buka 98000f228SVitaly Bukadefine void @foo() { 108000f228SVitaly Buka call void @bar(i32 7), !nosanitize !{} 118000f228SVitaly Buka ret void 128000f228SVitaly Buka} 138000f228SVitaly Buka 148000f228SVitaly Buka; CHECK-LABEL: define void @foo 158000f228SVitaly Buka; CHECK-NOT: store {{.*}} @__msan_param_tls 168000f228SVitaly Buka; CHECK: call void @bar 178000f228SVitaly Buka; CHECK: ret void 188000f228SVitaly Buka 198000f228SVitaly Buka 208000f228SVitaly Buka@__sancov_gen_ = private global [1 x i8] zeroinitializer, section "__sancov_cntrs", align 1 218000f228SVitaly Bukadefine void @sancov() sanitize_memory { 228000f228SVitaly Bukaentry: 23*21c3df4bSMatt Arsenault %0 = load i8, ptr @__sancov_gen_, !nosanitize !{} 248000f228SVitaly Buka %1 = add i8 %0, 1 25*21c3df4bSMatt Arsenault store i8 %1, ptr @__sancov_gen_, !nosanitize !{} 268000f228SVitaly Buka ret void 278000f228SVitaly Buka} 288000f228SVitaly Buka 298000f228SVitaly Buka; CHECK-LABEL: define void @sancov 308000f228SVitaly Buka; CHECK-NOT: xor 318000f228SVitaly Buka; CHECK-NOT: 87960930222080 328000f228SVitaly Buka; CHECK: ret void 338000f228SVitaly Buka 348000f228SVitaly Buka 358000f228SVitaly Bukadefine void @load_store() sanitize_memory { 368000f228SVitaly Bukaentry: 378000f228SVitaly Buka %x = alloca i32, align 4, !nosanitize !{} 38*21c3df4bSMatt Arsenault store i32 4, ptr %x, align 4, !nosanitize !{} 39*21c3df4bSMatt Arsenault %0 = load i32, ptr %x, align 4, !nosanitize !{} 408000f228SVitaly Buka %add = add nsw i32 %0, %0 41*21c3df4bSMatt Arsenault store i32 %add, ptr %x, align 4, !nosanitize !{} 428000f228SVitaly Buka ret void 438000f228SVitaly Buka} 448000f228SVitaly Buka 458000f228SVitaly Buka; CHECK-LABEL: define void @load_store 468000f228SVitaly Buka; CHECK-NOT: xor 478000f228SVitaly Buka; CHECK-NOT: 87960930222080 488000f228SVitaly Buka; CHECK: ret void 49