]> git.lizzy.rs Git - rust.git/blob - src/tools/clippy/tests/ui/crate_level_checks/no_std_main_recursion.rs
Merge commit 'f4850f7292efa33759b4f7f9b7621268979e9914' into clippyup
[rust.git] / src / tools / clippy / tests / ui / crate_level_checks / no_std_main_recursion.rs
1 // compile-flags: -Clink-arg=-nostartfiles
2 // ignore-macos
3
4 #![feature(lang_items, start, libc)]
5 #![no_std]
6
7 use core::panic::PanicInfo;
8 use core::sync::atomic::{AtomicUsize, Ordering};
9
10 static N: AtomicUsize = AtomicUsize::new(0);
11
12 #[warn(clippy::main_recursion)]
13 #[start]
14 fn main(_argc: isize, _argv: *const *const u8) -> isize {
15     let x = N.load(Ordering::Relaxed);
16     N.store(x + 1, Ordering::Relaxed);
17
18     if x < 3 {
19         main(_argc, _argv);
20     }
21
22     0
23 }
24
25 #[allow(clippy::empty_loop)]
26 #[panic_handler]
27 fn panic(_info: &PanicInfo) -> ! {
28     loop {}
29 }
30
31 #[lang = "eh_personality"]
32 extern "C" fn eh_personality() {}