1
1
use super :: metadata:: { file_metadata, UNKNOWN_COLUMN_NUMBER , UNKNOWN_LINE_NUMBER } ;
2
2
use super :: utils:: DIB ;
3
3
use rustc_codegen_ssa:: mir:: debuginfo:: { DebugScope , FunctionDebugContext } ;
4
+ use rustc_codegen_ssa:: traits:: * ;
4
5
5
6
use crate :: common:: CodegenCx ;
6
7
use crate :: llvm;
7
8
use crate :: llvm:: debuginfo:: { DIScope , DISubprogram } ;
8
9
use rustc:: mir:: { Body , SourceScope } ;
10
+ use rustc_session:: config:: DebugInfo ;
9
11
10
12
use rustc_index:: bit_set:: BitSet ;
11
13
use rustc_index:: vec:: Idx ;
@@ -19,10 +21,17 @@ pub fn compute_mir_scopes(
19
21
) {
20
22
// Find all the scopes with variables defined in them.
21
23
let mut has_variables = BitSet :: new_empty ( mir. source_scopes . len ( ) ) ;
22
- // FIXME(eddyb) take into account that arguments always have debuginfo,
23
- // irrespective of their name (assuming full debuginfo is enabled).
24
- for var_debug_info in & mir. var_debug_info {
25
- has_variables. insert ( var_debug_info. source_info . scope ) ;
24
+
25
+ // Only consider variables when they're going to be emitted.
26
+ // FIXME(eddyb) don't even allocate `has_variables` otherwise.
27
+ if cx. sess ( ) . opts . debuginfo == DebugInfo :: Full {
28
+ // FIXME(eddyb) take into account that arguments always have debuginfo,
29
+ // irrespective of their name (assuming full debuginfo is enabled).
30
+ // NOTE(eddyb) actually, on second thought, those are always in the
31
+ // function scope, which always exists.
32
+ for var_debug_info in & mir. var_debug_info {
33
+ has_variables. insert ( var_debug_info. source_info . scope ) ;
34
+ }
26
35
}
27
36
28
37
// Instantiate all scopes.
0 commit comments