diff options
| author | Tomasz Miąsko <tomasz.miasko@gmail.com> | 2020-01-15 00:00:00 +0000 |
|---|---|---|
| committer | Tomasz Miąsko <tomasz.miasko@gmail.com> | 2020-01-15 18:36:42 +0100 |
| commit | 5d00b5c4aae885a247d783f5c274df9ef0539d0e (patch) | |
| tree | 9fca87f187ced8bd9d9ec043ed8107145641a1f3 | |
| parent | 6d0bb91bcba33a70fae4b0c663fb4403ed78f071 (diff) | |
| download | rust-5d00b5c4aae885a247d783f5c274df9ef0539d0e.tar.gz rust-5d00b5c4aae885a247d783f5c274df9ef0539d0e.zip | |
Enable leak sanitizer test case
* Use `black_box` to avoid memory leak removal during optimization. * Leak multiple objects to make test case more robust.
| -rw-r--r-- | src/test/run-make-fulldeps/sanitizer-leak/Makefile | 6 | ||||
| -rw-r--r-- | src/test/run-make-fulldeps/sanitizer-leak/leak.rs | 11 |
2 files changed, 10 insertions, 7 deletions
diff --git a/src/test/run-make-fulldeps/sanitizer-leak/Makefile b/src/test/run-make-fulldeps/sanitizer-leak/Makefile index d8598b8ac93..da370335ca9 100644 --- a/src/test/run-make-fulldeps/sanitizer-leak/Makefile +++ b/src/test/run-make-fulldeps/sanitizer-leak/Makefile @@ -1,11 +1,7 @@ -include ../tools.mk # needs-sanitizer-support -# only-linux -# only-x86_64 -# ignore-test -# FIXME(#46126) ThinLTO for libstd broke this test all: - $(RUSTC) -C opt-level=1 -g -Z sanitizer=leak -Z print-link-args leak.rs | $(CGREP) rustc_rt.lsan + $(RUSTC) -O -Z sanitizer=leak -Z print-link-args leak.rs | $(CGREP) rustc_rt.lsan $(TMPDIR)/leak 2>&1 | $(CGREP) 'detected memory leaks' diff --git a/src/test/run-make-fulldeps/sanitizer-leak/leak.rs b/src/test/run-make-fulldeps/sanitizer-leak/leak.rs index ab8df5c7bfd..fb0a917dd98 100644 --- a/src/test/run-make-fulldeps/sanitizer-leak/leak.rs +++ b/src/test/run-make-fulldeps/sanitizer-leak/leak.rs @@ -1,6 +1,13 @@ +#![feature(test)] + +use std::hint::black_box; use std::mem; fn main() { - let xs = vec![1, 2, 3, 4]; - mem::forget(xs); + for _ in 0..10 { + let xs = vec![1, 2, 3]; + // Prevent compiler from removing the memory allocation. + let xs = black_box(xs); + mem::forget(xs); + } } |
