diff options
| author | Simonas Kazlauskas <git@kazlauskas.me> | 2018-08-12 15:27:03 +0300 |
|---|---|---|
| committer | Simonas Kazlauskas <git@kazlauskas.me> | 2018-08-12 18:38:46 +0300 |
| commit | dc02a6070f899b87249efa8c09bb2b90dbe94b0d (patch) | |
| tree | 6d4da57979dc2ec303f73dc03c5700916b1e4792 /src/librustc_codegen_llvm | |
| parent | 0aa8d0320266b5579428312095fe49af05ada972 (diff) | |
| download | rust-dc02a6070f899b87249efa8c09bb2b90dbe94b0d.tar.gz rust-dc02a6070f899b87249efa8c09bb2b90dbe94b0d.zip | |
Do not generate assumes for plain integer casts
Diffstat (limited to 'src/librustc_codegen_llvm')
| -rw-r--r-- | src/librustc_codegen_llvm/mir/rvalue.rs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/librustc_codegen_llvm/mir/rvalue.rs b/src/librustc_codegen_llvm/mir/rvalue.rs index dda33ae3fec..7eac8e735ed 100644 --- a/src/librustc_codegen_llvm/mir/rvalue.rs +++ b/src/librustc_codegen_llvm/mir/rvalue.rs @@ -304,7 +304,9 @@ impl FunctionCx<'a, 'll, 'tcx> { // then `i1 1` (i.e. E::B) is effectively `i8 -1`. signed = !scalar.is_bool() && s; - if scalar.valid_range.end() > scalar.valid_range.start() { + let er = scalar.valid_range_exclusive(bx.cx); + if er.end != er.start && + scalar.valid_range.end() > scalar.valid_range.start() { // We want `table[e as usize]` to not // have bound checks, and this is the most // convenient place to put the `assume`. |
