mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 04:57:19 +00:00 
			
		
		
		
	 00f4daa276
			
		
	
	
		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)
 | |
| }
 |