diff options
| author | bors <bors@rust-lang.org> | 2023-08-25 20:35:39 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-08-25 20:35:39 +0000 |
| commit | 734a0d0aa0d5cab60f94f6d0c6a014dae12915f1 (patch) | |
| tree | 6b7153a0da1264248a16ff1dd0fdcc783c337032 | |
| parent | 84382dd10a403f96adf523a59284e51b930690cb (diff) | |
| parent | cab9fc99c9394cf1ce74a19183362701e1608aa1 (diff) | |
| download | rust-734a0d0aa0d5cab60f94f6d0c6a014dae12915f1.tar.gz rust-734a0d0aa0d5cab60f94f6d0c6a014dae12915f1.zip | |
Auto merge of #115202 - ouz-a:more_smir, r=spastorino
Add stable for Constant in smir Previously https://github.com/rust-lang/rust/pull/114587 we covered much of the groundwork needed to cover Const in smir, so there is no reason keep `Constant` as String. r? `@spastorino`
| -rw-r--r-- | compiler/rustc_smir/src/rustc_smir/mod.rs | 14 | ||||
| -rw-r--r-- | compiler/rustc_smir/src/stable_mir/mir/body.rs | 13 |
2 files changed, 23 insertions, 4 deletions
diff --git a/compiler/rustc_smir/src/rustc_smir/mod.rs b/compiler/rustc_smir/src/rustc_smir/mod.rs index 6bcb6f8f37b..925d4a3bdd8 100644 --- a/compiler/rustc_smir/src/rustc_smir/mod.rs +++ b/compiler/rustc_smir/src/rustc_smir/mod.rs @@ -477,7 +477,19 @@ impl<'tcx> Stable<'tcx> for mir::Operand<'tcx> { match self { Copy(place) => stable_mir::mir::Operand::Copy(place.stable(tables)), Move(place) => stable_mir::mir::Operand::Move(place.stable(tables)), - Constant(c) => stable_mir::mir::Operand::Constant(c.to_string()), + Constant(c) => stable_mir::mir::Operand::Constant(c.stable(tables)), + } + } +} + +impl<'tcx> Stable<'tcx> for mir::Constant<'tcx> { + type T = stable_mir::mir::Constant; + + fn stable(&self, tables: &mut Tables<'tcx>) -> Self::T { + stable_mir::mir::Constant { + span: self.span.stable(tables), + user_ty: self.user_ty.map(|u| u.as_usize()).or(None), + literal: self.literal.stable(tables), } } } diff --git a/compiler/rustc_smir/src/stable_mir/mir/body.rs b/compiler/rustc_smir/src/stable_mir/mir/body.rs index a2ab51ff846..72f719c2a5e 100644 --- a/compiler/rustc_smir/src/stable_mir/mir/body.rs +++ b/compiler/rustc_smir/src/stable_mir/mir/body.rs @@ -1,8 +1,8 @@ use crate::rustc_internal::Opaque; use crate::stable_mir::ty::{ - AdtDef, ClosureDef, Const, GeneratorDef, GenericArgs, Movability, Region, + AdtDef, ClosureDef, Const, ConstantKind, GeneratorDef, GenericArgs, Movability, Region, }; -use crate::stable_mir::{self, ty::Ty}; +use crate::stable_mir::{self, ty::Ty, Span}; #[derive(Clone, Debug)] pub struct Body { @@ -324,7 +324,7 @@ pub enum AggregateKind { pub enum Operand { Copy(Place), Move(Place), - Constant(String), + Constant(Constant), } #[derive(Clone, Debug)] @@ -349,6 +349,13 @@ pub type VariantIdx = usize; type UserTypeAnnotationIndex = usize; #[derive(Clone, Debug)] +pub struct Constant { + pub span: Span, + pub user_ty: Option<UserTypeAnnotationIndex>, + pub literal: ConstantKind, +} + +#[derive(Clone, Debug)] pub struct SwitchTarget { pub value: u128, pub target: usize, |
