summaryrefslogtreecommitdiffstats
path: root/tests/run-make/intrinsic-unreachable/exit-unreachable.rs
blob: 75f893eb2df123a8e9781e4f45d8cd050074ffef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#![feature(core_intrinsics)]
#![crate_type="lib"]
use std::arch::asm;

use std::intrinsics;

#[allow(unreachable_code)]
#[inline(never)]
pub fn exit(n: usize) -> i32 {
    unsafe {
        // Pretend this asm is an exit() syscall.
        asm!("/*{0}*/", in(reg) n);
        intrinsics::unreachable()
    }
    // This return value is just here to generate some extra code for a return
    // value, making it easier for the test script to detect whether the
    // compiler deleted it.
    42
}