about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbjorn3 <17426603+bjorn3@users.noreply.github.com>2022-10-11 16:45:58 +0200
committerbjorn3 <17426603+bjorn3@users.noreply.github.com>2022-10-11 16:45:58 +0200
commit7bf4e19cc174d9a6a481c59e371f4d6a1e227798 (patch)
tree57ea5cac3640f3d7b966baddc90a641f49d57065
parentdae6a30d0b888a02e8b3a450510b8683f920cb16 (diff)
parent187b76965a58dcb64b4ca6cd2513c517eda5ad67 (diff)
downloadrust-7bf4e19cc174d9a6a481c59e371f4d6a1e227798.tar.gz
rust-7bf4e19cc174d9a6a481c59e371f4d6a1e227798.zip
Sync from rust bb93450ec4af83c20e9ba6c8e575aca55423001a
-rw-r--r--src/base.rs7
-rw-r--r--src/constant.rs11
2 files changed, 16 insertions, 2 deletions
diff --git a/src/base.rs b/src/base.rs
index 491525993fd..a41b561598f 100644
--- a/src/base.rs
+++ b/src/base.rs
@@ -635,7 +635,12 @@ fn codegen_stmt<'tcx>(
                     lval.write_cvalue(fx, operand.cast_pointer_to(to_layout));
                 }
                 Rvalue::Cast(
-                    CastKind::Misc
+                    CastKind::IntToInt
+                    | CastKind::FloatToFloat
+                    | CastKind::FloatToInt
+                    | CastKind::IntToFloat
+                    | CastKind::FnPtrToPtr
+                    | CastKind::PtrToPtr
                     | CastKind::PointerExposeAddress
                     | CastKind::PointerFromExposedAddress,
                     ref operand,
diff --git a/src/constant.rs b/src/constant.rs
index da4a96c4acc..d4bc3543b2d 100644
--- a/src/constant.rs
+++ b/src/constant.rs
@@ -481,7 +481,16 @@ pub(crate) fn mir_operand_get_const_val<'tcx>(
                     match &stmt.kind {
                         StatementKind::Assign(local_and_rvalue) if &local_and_rvalue.0 == place => {
                             match &local_and_rvalue.1 {
-                                Rvalue::Cast(CastKind::Misc, operand, ty) => {
+                                Rvalue::Cast(
+                                    CastKind::IntToInt
+                                    | CastKind::FloatToFloat
+                                    | CastKind::FloatToInt
+                                    | CastKind::IntToFloat
+                                    | CastKind::FnPtrToPtr
+                                    | CastKind::PtrToPtr,
+                                    operand,
+                                    ty,
+                                ) => {
                                     if computed_const_val.is_some() {
                                         return None; // local assigned twice
                                     }