// intrinsics::unreachable tells the compiler that a certain point in the code // is not reachable by any means, which enables some useful optimizations. // In this test, exit-unreachable contains this instruction and exit-ret does not, // which means the emitted artifacts should be shorter in length. // See https://github.com/rust-lang/rust/pull/16970 //@ needs-asm-support //@ ignore-windows // Reason: Because of Windows exception handling, the code is not necessarily any shorter. use run_make_support::{rfs, rustc}; fn main() { rustc().opt().emit("asm").input("exit-ret.rs").run(); rustc().opt().emit("asm").input("exit-unreachable.rs").run(); assert!( rfs::read_to_string("exit-unreachable.s").lines().count() < rfs::read_to_string("exit-ret.s").lines().count() ); }