48 lines · plain
1 2; This test checks that we are not instrumenting sanitizer code.3; RUN: opt < %s -passes='module(msan)' -S | FileCheck %s4 5target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"6target triple = "x86_64-unknown-linux-gnu"7 8; Function with sanitize_memory is instrumented.9; Function Attrs: nounwind uwtable10define void @instr_sa(ptr %a) sanitize_memory {11entry:12 %tmp1 = load i32, ptr %a, align 413 %tmp2 = add i32 %tmp1, 114 store i32 %tmp2, ptr %a, align 415 ret void16}17 18; CHECK-LABEL: @instr_sa19; CHECK: %0 = load i64, ptr @__msan_param_tls20 21 22; Function with disable_sanitizer_instrumentation is not instrumented.23; Function Attrs: nounwind uwtable24define void @noinstr_dsi(ptr %a) disable_sanitizer_instrumentation {25entry:26 %tmp1 = load i32, ptr %a, align 427 %tmp2 = add i32 %tmp1, 128 store i32 %tmp2, ptr %a, align 429 ret void30}31 32; CHECK-LABEL: @noinstr_dsi33; CHECK-NOT: %0 = load i64, ptr @__msan_param_tls34 35 36; disable_sanitizer_instrumentation takes precedence over sanitize_memory.37; Function Attrs: nounwind uwtable38define void @noinstr_dsi_sa(ptr %a) disable_sanitizer_instrumentation sanitize_memory {39entry:40 %tmp1 = load i32, ptr %a, align 441 %tmp2 = add i32 %tmp1, 142 store i32 %tmp2, ptr %a, align 443 ret void44}45 46; CHECK-LABEL: @noinstr_dsi_sa47; CHECK-NOT: %0 = load i64, ptr @__msan_param_tls48