add -C overflow-checks option
In addition to defining and handling the new option, we also add a method on librustc::Session for determining the necessity of overflow checks. This method provides a single point to sort out the three (!) different ways for turning on overflow checks: -C debug-assertions, -C overflow-checks, and -Z force-overflow-checks. Fixes #33134.
This commit is contained in:
parent
fc6f092c21
commit
ffc6ddd51b
6 changed files with 50 additions and 14 deletions
|
|
@ -804,6 +804,8 @@ options! {CodegenOptions, CodegenSetter, basic_codegen_options,
|
|||
"save all temporary output files during compilation"),
|
||||
rpath: bool = (false, parse_bool, [UNTRACKED],
|
||||
"set rpath values in libs/exes"),
|
||||
overflow_checks: Option<bool> = (None, parse_opt_bool, [TRACKED],
|
||||
"use overflow checks for integer arithmetic"),
|
||||
no_prepopulate_passes: bool = (false, parse_bool, [TRACKED],
|
||||
"don't pre-populate the pass manager with a list of passes"),
|
||||
no_vectorize_loops: bool = (false, parse_bool, [TRACKED],
|
||||
|
|
@ -2345,6 +2347,10 @@ mod tests {
|
|||
opts.cg.llvm_args = vec![String::from("1"), String::from("2")];
|
||||
assert!(reference.dep_tracking_hash() != opts.dep_tracking_hash());
|
||||
|
||||
opts = reference.clone();
|
||||
opts.cg.overflow_checks = Some(true);
|
||||
assert!(reference.dep_tracking_hash() != opts.dep_tracking_hash());
|
||||
|
||||
opts = reference.clone();
|
||||
opts.cg.no_prepopulate_passes = true;
|
||||
assert!(reference.dep_tracking_hash() != opts.dep_tracking_hash());
|
||||
|
|
|
|||
|
|
@ -372,6 +372,11 @@ impl Session {
|
|||
pub fn nonzeroing_move_hints(&self) -> bool {
|
||||
self.opts.debugging_opts.enable_nonzeroing_move_hints
|
||||
}
|
||||
pub fn overflow_checks(&self) -> bool {
|
||||
self.opts.cg.overflow_checks
|
||||
.or(self.opts.debugging_opts.force_overflow_checks)
|
||||
.unwrap_or(self.opts.debug_assertions)
|
||||
}
|
||||
|
||||
pub fn must_not_eliminate_frame_pointers(&self) -> bool {
|
||||
self.opts.debuginfo != DebugInfoLevel::NoDebugInfo ||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue