mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 13:04:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			818 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			818 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| // Test to make sure that inner functions within a polymorphic outer function
 | |
| // don't get re-codegened when the outer function is monomorphized. The test
 | |
| // code monomorphizes the outer functions several times, but the magic constants
 | |
| // used in the inner functions should each appear only once in the generated IR.
 | |
| 
 | |
| // issue: rust-lang/rust#7349
 | |
| //@ compile-flags: -Cno-prepopulate-passes -Copt-level=0
 | |
| 
 | |
| // CHECK-COUNT-1: ret i32 8675309
 | |
| // CHECK-COUNT-1: ret i32 11235813
 | |
| 
 | |
| fn outer<T>() {
 | |
|     #[allow(dead_code)]
 | |
|     fn inner() -> u32 {
 | |
|         8675309
 | |
|     }
 | |
|     inner();
 | |
| }
 | |
| 
 | |
| extern "C" fn outer_foreign<T>() {
 | |
|     #[allow(dead_code)]
 | |
|     fn inner() -> u32 {
 | |
|         11235813
 | |
|     }
 | |
|     inner();
 | |
| }
 | |
| 
 | |
| fn main() {
 | |
|     outer::<isize>();
 | |
|     outer::<usize>();
 | |
|     outer_foreign::<isize>();
 | |
|     outer_foreign::<usize>();
 | |
| }
 | 
