mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 13:04:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			716 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			716 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //@ compile-flags: -O -Z merge-functions=disabled
 | |
| #![crate_type = "lib"]
 | |
| 
 | |
| // This tests that LLVM can optimize based on the niches in the source or
 | |
| // destination types for casts.
 | |
| 
 | |
| // CHECK-LABEL: @u32_index
 | |
| #[no_mangle]
 | |
| pub fn u32_index(c: u32) -> [bool; 22] {
 | |
|     let mut array = [false; 22];
 | |
| 
 | |
|     let index = 32 - c.leading_zeros();
 | |
| 
 | |
|     // CHECK: call core::panicking::panic
 | |
|     array[index as usize] = true;
 | |
| 
 | |
|     array
 | |
| }
 | |
| 
 | |
| // CHECK-LABEL: @char_as_u32_index
 | |
| #[no_mangle]
 | |
| pub fn char_as_u32_index(c: char) -> [bool; 22] {
 | |
|     let c = c as u32;
 | |
| 
 | |
|     let mut array = [false; 22];
 | |
| 
 | |
|     let index = 32 - c.leading_zeros();
 | |
| 
 | |
|     // CHECK-NOT: call core::panicking::panic
 | |
|     array[index as usize] = true;
 | |
| 
 | |
|     array
 | |
| }
 | 
