| // Verifies that no_sanitize attribute prevents inlining when |
| // given sanitizer is enabled, but has no effect on inlining otherwise. |
| // |
| //@ needs-sanitizer-address |
| //@ needs-sanitizer-leak |
| //@ revisions: ASAN LSAN |
| //@ compile-flags: -Copt-level=3 -Zmir-opt-level=4 -Ctarget-feature=-crt-static |
| //@[ASAN] compile-flags: -Zsanitizer=address |
| //@[LSAN] compile-flags: -Zsanitizer=leak |
| |
| #![crate_type = "lib"] |
| #![feature(no_sanitize)] |
| |
| // ASAN-LABEL: define void @test |
| // ASAN: call {{.*}} @random_inline |
| // ASAN: } |
| // |
| // LSAN-LABEL: define void @test |
| // LSAN-NOT: call |
| // LSAN: } |
| #[no_mangle] |
| pub fn test(n: &mut u32) { |
| random_inline(n); |
| } |
| |
| #[no_sanitize(address)] |
| #[inline] |
| #[no_mangle] |
| pub fn random_inline(n: &mut u32) { |
| *n = 42; |
| } |