11aa59ff2SAlexander Potapenko; Test for -msan-disable-checks, which should treat every function in the file 21aa59ff2SAlexander Potapenko; as if it didn't have the sanitize_memory attribute. 3*e7bac3b9SVitaly Buka; RUN: opt < %s -msan-check-access-address=0 -S -passes='module(msan)' 2>&1 | FileCheck -allow-deprecated-dag-overlap -check-prefixes=CHECK,INSTR %s 4*e7bac3b9SVitaly Buka; RUN: opt < %s -msan-check-access-address=0 -S -passes='module(msan)' -msan-disable-checks=1 2>&1 | FileCheck -allow-deprecated-dag-overlap -check-prefixes=CHECK,NOSANITIZE %s 51aa59ff2SAlexander Potapenko 61aa59ff2SAlexander Potapenkotarget datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" 71aa59ff2SAlexander Potapenkotarget triple = "x86_64-unknown-linux-gnu" 81aa59ff2SAlexander Potapenko 91aa59ff2SAlexander Potapenkodeclare void @bar() 101aa59ff2SAlexander Potapenko 111aa59ff2SAlexander Potapenkodefine i32 @SanitizeFn(i32 %x) uwtable sanitize_memory { 121aa59ff2SAlexander Potapenkoentry: 131aa59ff2SAlexander Potapenko %tobool = icmp eq i32 %x, 0 141aa59ff2SAlexander Potapenko br i1 %tobool, label %if.end, label %if.then 151aa59ff2SAlexander Potapenko 161aa59ff2SAlexander Potapenkoif.then: ; preds = %entry 171aa59ff2SAlexander Potapenko tail call void @bar() 181aa59ff2SAlexander Potapenko br label %if.end 191aa59ff2SAlexander Potapenko 201aa59ff2SAlexander Potapenkoif.end: ; preds = %entry, %if.then 211aa59ff2SAlexander Potapenko ret i32 %x 221aa59ff2SAlexander Potapenko} 231aa59ff2SAlexander Potapenko 241aa59ff2SAlexander Potapenko; CHECK-LABEL: @SanitizeFn 251aa59ff2SAlexander Potapenko; INSTR: @__msan_warning 261aa59ff2SAlexander Potapenko; NOSANITIZE-NOT: @__msan_warning 271aa59ff2SAlexander Potapenko; NOSANITIZE: store i32 0, {{.*}} @__msan_retval_tls 281aa59ff2SAlexander Potapenko; CHECK: ret i32 291aa59ff2SAlexander Potapenko 301aa59ff2SAlexander Potapenko 311aa59ff2SAlexander Potapenkodefine i32 @NoSanitizeFn(i32 %x) uwtable { 321aa59ff2SAlexander Potapenkoentry: 331aa59ff2SAlexander Potapenko %tobool = icmp eq i32 %x, 0 341aa59ff2SAlexander Potapenko br i1 %tobool, label %if.end, label %if.then 351aa59ff2SAlexander Potapenko 361aa59ff2SAlexander Potapenkoif.then: ; preds = %entry 371aa59ff2SAlexander Potapenko tail call void @bar() 381aa59ff2SAlexander Potapenko br label %if.end 391aa59ff2SAlexander Potapenko 401aa59ff2SAlexander Potapenkoif.end: ; preds = %entry, %if.then 411aa59ff2SAlexander Potapenko ret i32 %x 421aa59ff2SAlexander Potapenko} 431aa59ff2SAlexander Potapenko 441aa59ff2SAlexander Potapenko 451aa59ff2SAlexander Potapenko; CHECK-LABEL: @NoSanitizeFn 461aa59ff2SAlexander Potapenko; CHECK-NOT: @__msan_warning 471aa59ff2SAlexander Potapenko; CHECK: store i32 0, {{.*}} @__msan_retval_tls 481aa59ff2SAlexander Potapenko; CHECK: ret i32 491aa59ff2SAlexander Potapenko 50