mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 13:04:42 +00:00 
			
		
		
		
	 a6292676eb
			
		
	
	
		a6292676eb
		
	
	
	
	
		
			
			We store argument indexes on VarDebugInfo. Unlike the previous method of relying on the variable index to know whether a variable is an argument, this survives MIR inlining. We also no longer check if var.source_info.scope is the outermost scope. When a function gets inlined, the arguments to the inner function will no longer be in the outermost scope. What we care about though is whether they were in the outermost scope prior to inlining, which we know by whether we assigned an argument index.
		
			
				
	
	
		
			21 lines
		
	
	
		
			671 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			21 lines
		
	
	
		
			671 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| // This test checks that debug information includes function argument indexes even if the function
 | |
| // gets inlined by MIR inlining. Without function argument indexes, `info args` in gdb won't show
 | |
| // arguments and their values for the current function.
 | |
| 
 | |
| // compile-flags: -Zinline-mir=yes -Cdebuginfo=2 --edition=2021
 | |
| 
 | |
| #![crate_type = "lib"]
 | |
| 
 | |
| pub fn outer_function(x: usize, y: usize) -> usize {
 | |
|     inner_function(x, y) + 1
 | |
| }
 | |
| 
 | |
| #[inline]
 | |
| fn inner_function(aaaa: usize, bbbb: usize) -> usize {
 | |
|     // CHECK: !DILocalVariable(name: "aaaa", arg: 1
 | |
|     // CHECK-SAME: line: 14
 | |
|     // CHECK: !DILocalVariable(name: "bbbb", arg: 2
 | |
|     // CHECK-SAME: line: 14
 | |
|     aaaa + bbbb
 | |
| }
 |