Allow disabling TrapUnreachable via -Ztrap-unreachable=no
This is useful for embedded targets where small code size is desired. For example, on my project (thumbv7em-none-eabi) this yields a 0.6% code size reduction.
This commit is contained in:
parent
d9a105fdd4
commit
7b62e09b03
3 changed files with 5 additions and 1 deletions
|
@ -152,7 +152,8 @@ pub fn target_machine_factory(
|
||||||
let features = features.join(",");
|
let features = features.join(",");
|
||||||
let features = CString::new(features).unwrap();
|
let features = CString::new(features).unwrap();
|
||||||
let abi = SmallCStr::new(&sess.target.llvm_abiname);
|
let abi = SmallCStr::new(&sess.target.llvm_abiname);
|
||||||
let trap_unreachable = sess.target.trap_unreachable;
|
let trap_unreachable =
|
||||||
|
sess.opts.debugging_opts.trap_unreachable.unwrap_or(sess.target.trap_unreachable);
|
||||||
let emit_stack_size_section = sess.opts.debugging_opts.emit_stack_sizes;
|
let emit_stack_size_section = sess.opts.debugging_opts.emit_stack_sizes;
|
||||||
|
|
||||||
let asm_comments = sess.asm_comments();
|
let asm_comments = sess.asm_comments();
|
||||||
|
|
|
@ -592,6 +592,7 @@ fn test_debugging_options_tracking_hash() {
|
||||||
tracked!(thinlto, Some(true));
|
tracked!(thinlto, Some(true));
|
||||||
tracked!(tune_cpu, Some(String::from("abc")));
|
tracked!(tune_cpu, Some(String::from("abc")));
|
||||||
tracked!(tls_model, Some(TlsModel::GeneralDynamic));
|
tracked!(tls_model, Some(TlsModel::GeneralDynamic));
|
||||||
|
tracked!(trap_unreachable, Some(false));
|
||||||
tracked!(treat_err_as_bug, Some(1));
|
tracked!(treat_err_as_bug, Some(1));
|
||||||
tracked!(unleash_the_miri_inside_of_you, true);
|
tracked!(unleash_the_miri_inside_of_you, true);
|
||||||
tracked!(use_ctors_section, Some(true));
|
tracked!(use_ctors_section, Some(true));
|
||||||
|
|
|
@ -1113,6 +1113,8 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
|
||||||
"choose the TLS model to use (`rustc --print tls-models` for details)"),
|
"choose the TLS model to use (`rustc --print tls-models` for details)"),
|
||||||
trace_macros: bool = (false, parse_bool, [UNTRACKED],
|
trace_macros: bool = (false, parse_bool, [UNTRACKED],
|
||||||
"for every macro invocation, print its name and arguments (default: no)"),
|
"for every macro invocation, print its name and arguments (default: no)"),
|
||||||
|
trap_unreachable: Option<bool> = (None, parse_opt_bool, [TRACKED],
|
||||||
|
"generate trap instructions for unreachable intrinsics (default: use target setting, usually yes)"),
|
||||||
treat_err_as_bug: Option<usize> = (None, parse_treat_err_as_bug, [TRACKED],
|
treat_err_as_bug: Option<usize> = (None, parse_treat_err_as_bug, [TRACKED],
|
||||||
"treat error number `val` that occurs as bug"),
|
"treat error number `val` that occurs as bug"),
|
||||||
trim_diagnostic_paths: bool = (true, parse_bool, [UNTRACKED],
|
trim_diagnostic_paths: bool = (true, parse_bool, [UNTRACKED],
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue