From 285920ea2d25a3f83770c707e145ac9fcedc3b07 Mon Sep 17 00:00:00 2001 From: Eric Mark Martin Date: Thu, 13 Jul 2023 00:24:24 -0400 Subject: [PATCH 1/3] move const definition --- compiler/rustc_smir/src/stable_mir/ty.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/compiler/rustc_smir/src/stable_mir/ty.rs b/compiler/rustc_smir/src/stable_mir/ty.rs index e9f17f92c04..11d6cf16763 100644 --- a/compiler/rustc_smir/src/stable_mir/ty.rs +++ b/compiler/rustc_smir/src/stable_mir/ty.rs @@ -1,6 +1,8 @@ use super::{with, DefId}; use crate::rustc_internal::Opaque; +type Const = Opaque; + #[derive(Copy, Clone, Debug)] pub struct Ty(pub usize); From 08e89acd2ef0387d214582fd0e51db2c53430735 Mon Sep 17 00:00:00 2001 From: Eric Mark Martin Date: Thu, 13 Jul 2023 00:23:22 -0400 Subject: [PATCH 2/3] add RawPtr --- compiler/rustc_smir/src/rustc_smir/mod.rs | 4 +++- compiler/rustc_smir/src/stable_mir/ty.rs | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/compiler/rustc_smir/src/rustc_smir/mod.rs b/compiler/rustc_smir/src/rustc_smir/mod.rs index 6af6cfe58f1..a9307a807c9 100644 --- a/compiler/rustc_smir/src/rustc_smir/mod.rs +++ b/compiler/rustc_smir/src/rustc_smir/mod.rs @@ -119,7 +119,9 @@ impl<'tcx> Tables<'tcx> { TyKind::RigidTy(RigidTy::Array(self.intern_ty(*ty), opaque(constant))) } ty::Slice(ty) => TyKind::RigidTy(RigidTy::Slice(self.intern_ty(*ty))), - ty::RawPtr(_) => todo!(), + ty::RawPtr(ty::TypeAndMut { ty, mutbl }) => { + TyKind::RigidTy(RigidTy::RawPtr(self.intern_ty(*ty), mutbl.stable())) + } ty::Ref(_, _, _) => todo!(), ty::FnDef(_, _) => todo!(), ty::FnPtr(_) => todo!(), diff --git a/compiler/rustc_smir/src/stable_mir/ty.rs b/compiler/rustc_smir/src/stable_mir/ty.rs index 11d6cf16763..92d7c1e60b1 100644 --- a/compiler/rustc_smir/src/stable_mir/ty.rs +++ b/compiler/rustc_smir/src/stable_mir/ty.rs @@ -20,6 +20,8 @@ pub enum TyKind { RigidTy(RigidTy), } +type Region = Opaque; + #[derive(Clone, Debug)] pub enum RigidTy { Bool, @@ -31,6 +33,7 @@ pub enum RigidTy { Str, Array(Ty, Const), Slice(Ty), + RawPtr(Ty, Mutability), Tuple(Vec), } From c8ee46be75420eeee9527135ebb1047f751d4372 Mon Sep 17 00:00:00 2001 From: Eric Mark Martin Date: Thu, 13 Jul 2023 01:07:50 -0400 Subject: [PATCH 3/3] conversions to smir RawPtr and Ref --- compiler/rustc_smir/src/rustc_smir/mod.rs | 4 +++- compiler/rustc_smir/src/stable_mir/mir/body.rs | 4 +--- compiler/rustc_smir/src/stable_mir/ty.rs | 9 +++------ 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/compiler/rustc_smir/src/rustc_smir/mod.rs b/compiler/rustc_smir/src/rustc_smir/mod.rs index a9307a807c9..0e5de1e74d3 100644 --- a/compiler/rustc_smir/src/rustc_smir/mod.rs +++ b/compiler/rustc_smir/src/rustc_smir/mod.rs @@ -122,7 +122,9 @@ impl<'tcx> Tables<'tcx> { ty::RawPtr(ty::TypeAndMut { ty, mutbl }) => { TyKind::RigidTy(RigidTy::RawPtr(self.intern_ty(*ty), mutbl.stable())) } - ty::Ref(_, _, _) => todo!(), + ty::Ref(region, ty, mutbl) => { + TyKind::RigidTy(RigidTy::Ref(opaque(region), self.intern_ty(*ty), mutbl.stable())) + } ty::FnDef(_, _) => todo!(), ty::FnPtr(_) => todo!(), ty::Dynamic(_, _, _) => todo!(), diff --git a/compiler/rustc_smir/src/stable_mir/mir/body.rs b/compiler/rustc_smir/src/stable_mir/mir/body.rs index 02ac907f09a..831eb6589e4 100644 --- a/compiler/rustc_smir/src/stable_mir/mir/body.rs +++ b/compiler/rustc_smir/src/stable_mir/mir/body.rs @@ -1,4 +1,4 @@ -use crate::rustc_internal::Opaque; +use crate::stable_mir::ty::Region; use crate::stable_mir::{self, ty::Ty}; #[derive(Clone, Debug)] @@ -137,8 +137,6 @@ pub enum Statement { Nop, } -type Region = Opaque; - // FIXME this is incomplete #[derive(Clone, Debug)] pub enum Rvalue { diff --git a/compiler/rustc_smir/src/stable_mir/ty.rs b/compiler/rustc_smir/src/stable_mir/ty.rs index 92d7c1e60b1..7ae07efb729 100644 --- a/compiler/rustc_smir/src/stable_mir/ty.rs +++ b/compiler/rustc_smir/src/stable_mir/ty.rs @@ -1,8 +1,6 @@ -use super::{with, DefId}; +use super::{mir::Mutability, with, DefId}; use crate::rustc_internal::Opaque; -type Const = Opaque; - #[derive(Copy, Clone, Debug)] pub struct Ty(pub usize); @@ -13,15 +11,13 @@ impl Ty { } type Const = Opaque; -type Region = Opaque; +pub(crate) type Region = Opaque; #[derive(Clone, Debug)] pub enum TyKind { RigidTy(RigidTy), } -type Region = Opaque; - #[derive(Clone, Debug)] pub enum RigidTy { Bool, @@ -34,6 +30,7 @@ pub enum RigidTy { Array(Ty, Const), Slice(Ty), RawPtr(Ty, Mutability), + Ref(Region, Ty, Mutability), Tuple(Vec), }