mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-29 10:13:54 +00:00
00f4daa276
This skips emitting extra arguments at every callsite (of which there can be many). For a librustc_driver build with overflow checks enabled, this cuts 0.7MB from the resulting binary.
15 lines
565 B
Rust
15 lines
565 B
Rust
//@ compile-flags: -Zmir-enable-passes=+Inline,+GVN --crate-type lib
|
|
//@ revisions: ASSERT NOASSERT
|
|
//@[ASSERT] compile-flags: -Coverflow-checks=on
|
|
//@[NOASSERT] compile-flags: -Coverflow-checks=off
|
|
|
|
// CHECK-LABEL: define{{.*}} @assertion
|
|
// ASSERT: call void @{{.*4core9panicking11panic_const24panic_const_add_overflow}}
|
|
// NOASSERT: ret i8 0
|
|
#[no_mangle]
|
|
pub fn assertion() -> u8 {
|
|
// Optimized MIR will replace this `CheckedBinaryOp` by `const (0, true)`.
|
|
// Verify that codegen does or does not emit the panic.
|
|
<u8 as std::ops::Add>::add(255, 1)
|
|
}
|