about summary refs log tree commit diff
path: root/src/libcore/slice
diff options
context:
space:
mode:
authorBjörn Steinbrink <bsteinbr@gmail.com>2018-02-27 14:20:13 +0100
committerBjörn Steinbrink <bsteinbr@gmail.com>2018-02-27 14:20:13 +0100
commitf05d9679d708ccd1a6a643838bbf3a64ccf271bf (patch)
treeadaae6d477aacd3fdebafc4eacc67d9e7a113db4 /src/libcore/slice
parent29f5c699b11a6a148f097f82eaa05202f8799bbc (diff)
downloadrust-f05d9679d708ccd1a6a643838bbf3a64ccf271bf.tar.gz
rust-f05d9679d708ccd1a6a643838bbf3a64ccf271bf.zip
Backport LLVM fixes for a JumpThreading / assume intrinsic bug
Diffstat (limited to 'src/libcore/slice')
-rw-r--r--src/libcore/slice/mod.rs24
1 files changed, 9 insertions, 15 deletions
diff --git a/src/libcore/slice/mod.rs b/src/libcore/slice/mod.rs
index ac390313a67..aacbbd5058e 100644
--- a/src/libcore/slice/mod.rs
+++ b/src/libcore/slice/mod.rs
@@ -1246,18 +1246,15 @@ macro_rules! iterator {
             {
                 // The addition might panic on overflow
                 // Use the len of the slice to hint optimizer to remove result index bounds check.
-                let _n = make_slice!(self.ptr, self.end).len();
+                let n = make_slice!(self.ptr, self.end).len();
                 self.try_fold(0, move |i, x| {
                     if predicate(x) { Err(i) }
                     else { Ok(i + 1) }
                 }).err()
-                    // // FIXME(#48116/#45964):
-                    // // This assume() causes misoptimization on LLVM 6.
-                    // // Commented out until it is fixed again.
-                    // .map(|i| {
-                    //     unsafe { assume(i < n) };
-                    //     i
-                    // })
+                    .map(|i| {
+                        unsafe { assume(i < n) };
+                        i
+                    })
             }
 
             #[inline]
@@ -1274,13 +1271,10 @@ macro_rules! iterator {
                     if predicate(x) { Err(i) }
                     else { Ok(i) }
                 }).err()
-                    // // FIXME(#48116/#45964):
-                    // // This assume() causes misoptimization on LLVM 6.
-                    // // Commented out until it is fixed again.
-                    // .map(|i| {
-                    //     unsafe { assume(i < n) };
-                    //     i
-                    // })
+                    .map(|i| {
+                        unsafe { assume(i < n) };
+                        i
+                    })
             }
         }