diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-01-25 16:59:25 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-01-25 16:59:25 +0100 |
| commit | ef5a5bab7ac333746c693c76ecc4a76cd705739b (patch) | |
| tree | eef3c48259b2de7db6671885e49480db6691d8a4 /src | |
| parent | 7187db619c134697647f96e82111cbcbae337d4f (diff) | |
| parent | b80332ed4c142496096ff2bf9aa378cc6b3bf806 (diff) | |
| download | rust-ef5a5bab7ac333746c693c76ecc4a76cd705739b.tar.gz rust-ef5a5bab7ac333746c693c76ecc4a76cd705739b.zip | |
Rollup merge of #56233 - kenta7777:kenta7777#49937, r=oli-obk
Miri and miri-related code contains repetitions of `(n << amt) >> amt` I reduced some code repetitions contains `(n << amt) >> amt`. This pull request is related to #49937.
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_lint/types.rs | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/librustc_lint/types.rs b/src/librustc_lint/types.rs index 642681a73a8..9d3275ffde2 100644 --- a/src/librustc_lint/types.rs +++ b/src/librustc_lint/types.rs @@ -21,6 +21,8 @@ use syntax::source_map; use rustc::hir; +use rustc::mir::interpret::{sign_extend, truncate}; + declare_lint! { UNUSED_COMPARISONS, Warn, @@ -368,14 +370,14 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for TypeLimits { let (t, actually) = match ty { ty::Int(t) => { let ity = attr::IntType::SignedInt(t); - let bits = layout::Integer::from_attr(&cx.tcx, ity).size().bits(); - let actually = (val << (128 - bits)) as i128 >> (128 - bits); + let size = layout::Integer::from_attr(&cx.tcx, ity).size(); + let actually = sign_extend(val, size) as i128; (format!("{:?}", t), actually.to_string()) } ty::Uint(t) => { let ity = attr::IntType::UnsignedInt(t); - let bits = layout::Integer::from_attr(&cx.tcx, ity).size().bits(); - let actually = (val << (128 - bits)) >> (128 - bits); + let size = layout::Integer::from_attr(&cx.tcx, ity).size(); + let actually = truncate(val, size); (format!("{:?}", t), actually.to_string()) } _ => bug!(), |
