diff options
| author | bors <bors@rust-lang.org> | 2021-08-25 02:17:41 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-08-25 02:17:41 +0000 |
| commit | e5484cec0e3f60b2a0010505cd355639f75a2973 (patch) | |
| tree | 25a26fad7e088f2c98dc4a268f8ce0351ea469d9 /compiler/rustc_codegen_llvm/src/builder.rs | |
| parent | faa0a10406319264e81086fe88fd426cbfa09021 (diff) | |
| parent | f17e384a43dd8ca0aefb36bfcd8a69d9ad7f12cf (diff) | |
| download | rust-e5484cec0e3f60b2a0010505cd355639f75a2973.tar.gz rust-e5484cec0e3f60b2a0010505cd355639f75a2973.zip | |
Auto merge of #88242 - bonega:allocation_range, r=oli-obk
Use custom wrap-around type instead of RangeInclusive Two reasons: 1. More memory is allocated than necessary for `valid_range` in `Scalar`. The range is not used as an iterator and `exhausted` is never used. 2. `contains`, `count` etc. methods in `RangeInclusive` are doing very unhelpful(and dangerous!) things when used as a wrap-around range. - In general this PR wants to limit potentially confusing methods, that have a low probability of working. Doing a local perf run, every metric shows improvement except for instructions. Max-rss seem to have a very consistent improvement. Sorry - newbie here, probably doing something wrong.
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/builder.rs')
| -rw-r--r-- | compiler/rustc_codegen_llvm/src/builder.rs | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/compiler/rustc_codegen_llvm/src/builder.rs b/compiler/rustc_codegen_llvm/src/builder.rs index 07e1b55afe5..13538683e05 100644 --- a/compiler/rustc_codegen_llvm/src/builder.rs +++ b/compiler/rustc_codegen_llvm/src/builder.rs @@ -462,7 +462,6 @@ impl BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> { load: &'ll Value, scalar: &abi::Scalar, ) { - let vr = scalar.valid_range.clone(); match scalar.value { abi::Int(..) => { let range = scalar.valid_range_exclusive(bx); @@ -470,7 +469,7 @@ impl BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> { bx.range_metadata(load, range); } } - abi::Pointer if vr.start() < vr.end() && !vr.contains(&0) => { + abi::Pointer if !scalar.valid_range.contains_zero() => { bx.nonnull_metadata(load); } _ => {} |
