about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJonas Schievink <jonasschievink@gmail.com>2020-04-19 14:25:07 +0200
committerJonas Schievink <jonasschievink@gmail.com>2020-04-20 21:18:20 +0200
commit415fd0cc1a9bb902a2b4a22669debac74373cf67 (patch)
tree3966502824089dbe367ffcdc014345803e20d4f9
parent9e6f38ab0d55a80e5c2984aa588cd08e64eac30e (diff)
downloadrust-415fd0cc1a9bb902a2b4a22669debac74373cf67.tar.gz
rust-415fd0cc1a9bb902a2b4a22669debac74373cf67.zip
const prop: don't special case return place
-rw-r--r--src/librustc_mir/transform/const_prop.rs14
-rw-r--r--src/test/incremental/hashes/enum_constructors.rs8
2 files changed, 9 insertions, 13 deletions
diff --git a/src/librustc_mir/transform/const_prop.rs b/src/librustc_mir/transform/const_prop.rs
index 1a0ac4a21df..39de685b173 100644
--- a/src/librustc_mir/transform/const_prop.rs
+++ b/src/librustc_mir/transform/const_prop.rs
@@ -409,16 +409,12 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
     fn get_const(&self, local: Local) -> Option<OpTy<'tcx>> {
         let op = self.ecx.access_local(self.ecx.frame(), local, None).ok();
 
-        if local == RETURN_PLACE {
-            // Try to read the return place as an immediate so that if it is representable as a
-            // scalar, we can handle it as such, but otherwise, just return the value as is.
-            return match op.map(|ret| self.ecx.try_read_immediate(ret)) {
-                Some(Ok(Ok(imm))) => Some(imm.into()),
-                _ => op,
-            };
+        // Try to read the local as an immediate so that if it is representable as a scalar, we can
+        // handle it as such, but otherwise, just return the value as is.
+        match op.map(|ret| self.ecx.try_read_immediate(ret)) {
+            Some(Ok(Ok(imm))) => Some(imm.into()),
+            _ => op,
         }
-
-        op
     }
 
     fn remove_const(&mut self, local: Local) {
diff --git a/src/test/incremental/hashes/enum_constructors.rs b/src/test/incremental/hashes/enum_constructors.rs
index 99c50f7e173..2c07cbcb205 100644
--- a/src/test/incremental/hashes/enum_constructors.rs
+++ b/src/test/incremental/hashes/enum_constructors.rs
@@ -274,14 +274,14 @@ pub enum Clike2 {
 // Change constructor path (C-like) --------------------------------------
 #[cfg(cfail1)]
 pub fn change_constructor_path_c_like() {
-    let _ = Clike::B;
+    let _x = Clike::B;
 }
 
 #[cfg(not(cfail1))]
 #[rustc_clean(cfg="cfail2", except="hir_owner_nodes,optimized_mir,mir_built,typeck_tables_of")]
 #[rustc_clean(cfg="cfail3")]
 pub fn change_constructor_path_c_like() {
-    let _ = Clike2::B;
+    let _x = Clike2::B;
 }
 
 
@@ -289,14 +289,14 @@ pub fn change_constructor_path_c_like() {
 // Change constructor variant (C-like) --------------------------------------
 #[cfg(cfail1)]
 pub fn change_constructor_variant_c_like() {
-    let _ = Clike::A;
+    let _x = Clike::A;
 }
 
 #[cfg(not(cfail1))]
 #[rustc_clean(cfg="cfail2", except="hir_owner_nodes,optimized_mir,mir_built")]
 #[rustc_clean(cfg="cfail3")]
 pub fn change_constructor_variant_c_like() {
-    let _ = Clike::C;
+    let _x = Clike::C;
 }