about summary refs log tree commit diff
path: root/src/librustc_codegen_llvm
diff options
context:
space:
mode:
authorSimonas Kazlauskas <git@kazlauskas.me>2018-08-12 15:27:03 +0300
committerSimonas Kazlauskas <git@kazlauskas.me>2018-08-12 18:38:46 +0300
commitdc02a6070f899b87249efa8c09bb2b90dbe94b0d (patch)
tree6d4da57979dc2ec303f73dc03c5700916b1e4792 /src/librustc_codegen_llvm
parent0aa8d0320266b5579428312095fe49af05ada972 (diff)
downloadrust-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.rs4
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`.