Skip to content

Commit 46c48de

Browse files
committed
refactor ub_checks and contract_checks to share logic
1 parent d3e7a53 commit 46c48de

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

rustc_public/src/mir/body.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -642,8 +642,7 @@ impl Rvalue {
642642
.ok_or_else(|| error!("Expected a `RigidTy` but found: {place_ty:?}"))
643643
}
644644
Rvalue::NullaryOp(NullOp::OffsetOf(..), _) => Ok(Ty::usize_ty()),
645-
Rvalue::NullaryOp(NullOp::ContractChecks, _)
646-
| Rvalue::NullaryOp(NullOp::UbChecks, _) => Ok(Ty::bool_ty()),
645+
Rvalue::NullaryOp(NullOp::RuntimeChecks(_), _) => Ok(Ty::bool_ty()),
647646
Rvalue::Aggregate(ak, ops) => match *ak {
648647
AggregateKind::Array(ty) => Ty::try_new_array(ty, ops.len() as u64),
649648
AggregateKind::Tuple => Ok(Ty::new_tuple(
@@ -1024,6 +1023,12 @@ pub enum CastKind {
10241023
pub enum NullOp {
10251024
/// Returns the offset of a field.
10261025
OffsetOf(Vec<(VariantIdx, FieldIdx)>),
1026+
/// Codegen conditions for runtime checks.
1027+
RuntimeChecks(RuntimeChecks),
1028+
}
1029+
1030+
#[derive(Clone, Debug, Eq, PartialEq, Hash, Serialize)]
1031+
pub enum RuntimeChecks {
10271032
/// cfg!(ub_checks), but at codegen time
10281033
UbChecks,
10291034
/// cfg!(contract_checks), but at codegen time

rustc_public/src/unstable/convert/stable/mir.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,12 +322,15 @@ impl<'tcx> Stable<'tcx> for mir::NullOp<'tcx> {
322322
cx: &CompilerCtxt<'cx, BridgeTys>,
323323
) -> Self::T {
324324
use rustc_middle::mir::NullOp::*;
325+
use rustc_middle::mir::RuntimeChecks::*;
325326
match self {
326327
OffsetOf(indices) => crate::mir::NullOp::OffsetOf(
327328
indices.iter().map(|idx| idx.stable(tables, cx)).collect(),
328329
),
329-
UbChecks => crate::mir::NullOp::UbChecks,
330-
ContractChecks => crate::mir::NullOp::ContractChecks,
330+
RuntimeChecks(op) => crate::mir::NullOp::RuntimeChecks(match op {
331+
UbChecks => crate::mir::RuntimeChecks::UbChecks,
332+
ContractChecks => crate::mir::RuntimeChecks::ContractChecks,
333+
}),
331334
}
332335
}
333336
}

0 commit comments

Comments
 (0)