blob: 132f1450b6ded53bce412eb79f0154e128a2b924 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
//@ normalize-stderr-test: "\b10000(08|16|32)\b" -> "100$$PTR"
//@ normalize-stderr-test: "\b2500(060|120)\b" -> "250$$PTR"
#![allow(unused)]
#![warn(clippy::large_stack_frames)]
use std::hint::black_box;
fn generic<T: Default>() {
let x = T::default();
black_box(&x);
}
struct ArrayDefault<const N: usize>([u8; N]);
impl<const N: usize> Default for ArrayDefault<N> {
fn default() -> Self {
Self([0; N])
}
}
fn many_small_arrays() {
//~^ large_stack_frames
let x = [0u8; 500_000];
let x2 = [0u8; 500_000];
let x3 = [0u8; 500_000];
let x4 = [0u8; 500_000];
let x5 = [0u8; 500_000];
black_box((&x, &x2, &x3, &x4, &x5));
}
fn large_return_value() -> ArrayDefault<1_000_000> {
//~^ large_stack_frames
Default::default()
}
fn large_fn_arg(x: ArrayDefault<1_000_000>) {
//~^ large_stack_frames
black_box(&x);
}
fn has_large_closure() {
let f = || black_box(&[0u8; 1_000_000]);
//~^ large_stack_frames
f();
}
fn main() {
generic::<ArrayDefault<1_000_000>>();
}
|