Rollup merge of #119828 - azhogin:azhogin/collapse_debuginfo_improved_attr, r=petrochenkov
Improved collapse_debuginfo attribute, added command-line flag Improved attribute collapse_debuginfo with variants: `#[collapse_debuginfo=(no|external|yes)]`. Added command-line flag for default behaviour. Work-in-progress: will add more tests. cc https://github.com/rust-lang/rust/issues/100758
This commit is contained in:
commit
c0da80f418
17 changed files with 281 additions and 21 deletions
|
@ -3190,12 +3190,12 @@ pub enum WasiExecModel {
|
|||
/// how the hash should be calculated when adding a new command-line argument.
|
||||
pub(crate) mod dep_tracking {
|
||||
use super::{
|
||||
BranchProtection, CFGuard, CFProtection, CrateType, DebugInfo, DebugInfoCompression,
|
||||
ErrorOutputType, FunctionReturn, InliningThreshold, InstrumentCoverage, InstrumentXRay,
|
||||
LinkerPluginLto, LocationDetail, LtoCli, NextSolverConfig, OomStrategy, OptLevel,
|
||||
OutFileName, OutputType, OutputTypes, Polonius, RemapPathScopeComponents, ResolveDocLinks,
|
||||
SourceFileHashAlgorithm, SplitDwarfKind, SwitchWithOptPath, SymbolManglingVersion,
|
||||
WasiExecModel,
|
||||
BranchProtection, CFGuard, CFProtection, CollapseMacroDebuginfo, CrateType, DebugInfo,
|
||||
DebugInfoCompression, ErrorOutputType, FunctionReturn, InliningThreshold,
|
||||
InstrumentCoverage, InstrumentXRay, LinkerPluginLto, LocationDetail, LtoCli,
|
||||
NextSolverConfig, OomStrategy, OptLevel, OutFileName, OutputType, OutputTypes, Polonius,
|
||||
RemapPathScopeComponents, ResolveDocLinks, SourceFileHashAlgorithm, SplitDwarfKind,
|
||||
SwitchWithOptPath, SymbolManglingVersion, WasiExecModel,
|
||||
};
|
||||
use crate::lint;
|
||||
use crate::utils::NativeLib;
|
||||
|
@ -3274,6 +3274,7 @@ pub(crate) mod dep_tracking {
|
|||
LtoCli,
|
||||
DebugInfo,
|
||||
DebugInfoCompression,
|
||||
CollapseMacroDebuginfo,
|
||||
UnstableFeatures,
|
||||
NativeLib,
|
||||
SanitizerSet,
|
||||
|
@ -3437,6 +3438,25 @@ pub enum ProcMacroExecutionStrategy {
|
|||
CrossThread,
|
||||
}
|
||||
|
||||
/// How to perform collapse macros debug info
|
||||
/// if-ext - if macro from different crate (related to callsite code)
|
||||
/// | cmd \ attr | no | (unspecified) | external | yes |
|
||||
/// | no | no | no | no | no |
|
||||
/// | (unspecified) | no | no | if-ext | yes |
|
||||
/// | external | no | if-ext | if-ext | yes |
|
||||
/// | yes | yes | yes | yes | yes |
|
||||
#[derive(Clone, Copy, PartialEq, Hash, Debug)]
|
||||
pub enum CollapseMacroDebuginfo {
|
||||
/// Don't collapse debuginfo for the macro
|
||||
No = 0,
|
||||
/// Unspecified value
|
||||
Unspecified = 1,
|
||||
/// Collapse debuginfo if the macro comes from a different crate
|
||||
External = 2,
|
||||
/// Collapse debuginfo for the macro
|
||||
Yes = 3,
|
||||
}
|
||||
|
||||
/// Which format to use for `-Z dump-mono-stats`
|
||||
#[derive(Clone, Copy, PartialEq, Hash, Debug)]
|
||||
pub enum DumpMonoStatsFormat {
|
||||
|
|
|
@ -388,6 +388,7 @@ mod desc {
|
|||
pub const parse_cfprotection: &str = "`none`|`no`|`n` (default), `branch`, `return`, or `full`|`yes`|`y` (equivalent to `branch` and `return`)";
|
||||
pub const parse_debuginfo: &str = "either an integer (0, 1, 2), `none`, `line-directives-only`, `line-tables-only`, `limited`, or `full`";
|
||||
pub const parse_debuginfo_compression: &str = "one of `none`, `zlib`, or `zstd`";
|
||||
pub const parse_collapse_macro_debuginfo: &str = "one of `no`, `external`, or `yes`";
|
||||
pub const parse_strip: &str = "either `none`, `debuginfo`, or `symbols`";
|
||||
pub const parse_linker_flavor: &str = ::rustc_target::spec::LinkerFlavorCli::one_of();
|
||||
pub const parse_optimization_fuel: &str = "crate=integer";
|
||||
|
@ -1302,6 +1303,19 @@ mod parse {
|
|||
true
|
||||
}
|
||||
|
||||
pub(crate) fn parse_collapse_macro_debuginfo(
|
||||
slot: &mut CollapseMacroDebuginfo,
|
||||
v: Option<&str>,
|
||||
) -> bool {
|
||||
*slot = match v {
|
||||
Some("no") => CollapseMacroDebuginfo::No,
|
||||
Some("external") => CollapseMacroDebuginfo::External,
|
||||
Some("yes") => CollapseMacroDebuginfo::Yes,
|
||||
_ => return false,
|
||||
};
|
||||
true
|
||||
}
|
||||
|
||||
pub(crate) fn parse_proc_macro_execution_strategy(
|
||||
slot: &mut ProcMacroExecutionStrategy,
|
||||
v: Option<&str>,
|
||||
|
@ -1534,6 +1548,9 @@ options! {
|
|||
"instrument control-flow architecture protection"),
|
||||
codegen_backend: Option<String> = (None, parse_opt_string, [TRACKED],
|
||||
"the backend to use"),
|
||||
collapse_macro_debuginfo: CollapseMacroDebuginfo = (CollapseMacroDebuginfo::Unspecified,
|
||||
parse_collapse_macro_debuginfo, [TRACKED],
|
||||
"set option to collapse debuginfo for macros"),
|
||||
combine_cgu: bool = (false, parse_bool, [TRACKED],
|
||||
"combine CGUs into a single one"),
|
||||
crate_attr: Vec<String> = (Vec::new(), parse_string_push, [TRACKED],
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue