Pinned shims/panic.rs and mir/terminator.rs::AssertKind::panic_function. These operations call the actual panic lang item; a failed assertion is not silently converted into a normal return, UB, or a completed unwind.
- Panic : LangItem
- PanicNounwind : LangItem
- PanicBoundsCheck : LangItem
- PanicMisalignedPointerDereference : LangItem
- PanicAddOverflow : LangItem
- PanicSubOverflow : LangItem
- PanicMulOverflow : LangItem
- PanicDivOverflow : LangItem
- PanicRemOverflow : LangItem
- PanicNegOverflow : LangItem
- PanicShrOverflow : LangItem
- PanicShlOverflow : LangItem
- PanicDivZero : LangItem
- PanicRemZero : LangItem
- PanicNullPointerDereference : LangItem
- PanicNullReferenceConstructed : LangItem
- PanicInvalidEnumConstruction : LangItem
- PanicCoroutineResumed : LangItem
- PanicAsyncFnResumed : LangItem
- PanicAsyncGenFnResumed : LangItem
- PanicGenFnNone : LangItem
- PanicCoroutineResumedPanic : LangItem
- PanicAsyncFnResumedPanic : LangItem
- PanicAsyncGenFnResumedPanic : LangItem
- PanicGenFnNonePanic : LangItem
- PanicCoroutineResumedDrop : LangItem
- PanicAsyncFnResumedDrop : LangItem
- PanicAsyncGenFnResumedDrop : LangItem
- PanicGenFnNoneDrop : LangItem
Instances For
@[instance_reducible]
@[instance_reducible]
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Exact source mapping; bounds/misalignment use their argument-bearing special handlers and impossible overflowing operators are compiler errors.
Equations
- One or more equations did not get rendered due to their size.
- Miri.Interpreter.Panic.assertLangItem (Miri.MIR.AssertKind.Overflow Miri.MIR.BinOp.Add left right) = Except.ok Miri.Interpreter.Panic.LangItem.PanicAddOverflow
- Miri.Interpreter.Panic.assertLangItem (Miri.MIR.AssertKind.Overflow Miri.MIR.BinOp.Sub left right) = Except.ok Miri.Interpreter.Panic.LangItem.PanicSubOverflow
- Miri.Interpreter.Panic.assertLangItem (Miri.MIR.AssertKind.Overflow Miri.MIR.BinOp.Mul left right) = Except.ok Miri.Interpreter.Panic.LangItem.PanicMulOverflow
- Miri.Interpreter.Panic.assertLangItem (Miri.MIR.AssertKind.Overflow Miri.MIR.BinOp.Div left right) = Except.ok Miri.Interpreter.Panic.LangItem.PanicDivOverflow
- Miri.Interpreter.Panic.assertLangItem (Miri.MIR.AssertKind.Overflow Miri.MIR.BinOp.Rem left right) = Except.ok Miri.Interpreter.Panic.LangItem.PanicRemOverflow
- Miri.Interpreter.Panic.assertLangItem (Miri.MIR.AssertKind.Overflow Miri.MIR.BinOp.Shr left right) = Except.ok Miri.Interpreter.Panic.LangItem.PanicShrOverflow
- Miri.Interpreter.Panic.assertLangItem (Miri.MIR.AssertKind.Overflow Miri.MIR.BinOp.Shl left right) = Except.ok Miri.Interpreter.Panic.LangItem.PanicShlOverflow
- Miri.Interpreter.Panic.assertLangItem (Miri.MIR.AssertKind.OverflowNeg operand) = Except.ok Miri.Interpreter.Panic.LangItem.PanicNegOverflow
- Miri.Interpreter.Panic.assertLangItem (Miri.MIR.AssertKind.DivisionByZero operand) = Except.ok Miri.Interpreter.Panic.LangItem.PanicDivZero
- Miri.Interpreter.Panic.assertLangItem (Miri.MIR.AssertKind.RemainderByZero operand) = Except.ok Miri.Interpreter.Panic.LangItem.PanicRemZero
- Miri.Interpreter.Panic.assertLangItem (Miri.MIR.AssertKind.ResumedAfterReturn kind) = Except.ok (Miri.Interpreter.Panic.afterReturn✝ kind)
- Miri.Interpreter.Panic.assertLangItem (Miri.MIR.AssertKind.ResumedAfterPanic kind) = Except.ok (Miri.Interpreter.Panic.afterPanic✝ kind)
- Miri.Interpreter.Panic.assertLangItem (Miri.MIR.AssertKind.ResumedAfterDrop kind) = Except.ok (Miri.Interpreter.Panic.afterDrop✝ kind)
- Miri.Interpreter.Panic.assertLangItem Miri.MIR.AssertKind.NullPointerDereference = Except.ok Miri.Interpreter.Panic.LangItem.PanicNullPointerDereference
- Miri.Interpreter.Panic.assertLangItem Miri.MIR.AssertKind.NullReferenceConstructed = Except.ok Miri.Interpreter.Panic.LangItem.PanicNullReferenceConstructed
- Miri.Interpreter.Panic.assertLangItem (Miri.MIR.AssertKind.InvalidEnumConstruction operand) = Except.ok Miri.Interpreter.Panic.LangItem.PanicInvalidEnumConstruction
- Miri.Interpreter.Panic.assertLangItem (Miri.MIR.AssertKind.BoundsCheck length index) = Except.error (Miri.Interpreter.StepError.invalidProgram "special AssertKind passed to panic_function")
Instances For
- driver : Unwind.Hooks K User C Other
- allocateStringDedup : C → String → MachineHooks.M K User (MPlaceTy Memory.Provenance)
- toImmediatePointer : C → MPlaceTy Memory.Provenance → MachineHooks.M K User (RvalueImmTy Memory.Provenance)
- langItem : C → LangItem → MachineHooks.M K User (Option MIR.DefId)
- genericParameters : C → MIR.DefId → MachineHooks.M K User (Array MainGenericParameter)
- evalOperand : C → MIR.Operand → MachineHooks.M K User (OpTy Memory.Provenance)
- evalOperandAt : C → OperandPath → MIR.Operand → MachineHooks.M K User (OpTy Memory.Provenance)
Instances For
def
Miri.Interpreter.Panic.start
{K User C Other : Type}
(h : Hooks K User C Other)
(choice : C)
(message : String)
(unwind : MIR.UnwindAction)
:
MachineHooks.M K User Unit
Allocate/deduplicate the message before resolving the panic lang item.
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Miri.Interpreter.Panic.startNounwind
{K User C Other : Type}
(h : Hooks K User C Other)
(choice : C)
(message : String)
:
MachineHooks.M K User Unit
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Miri.Interpreter.Panic.assertPanic
{K User C Other : Type}
(h : Hooks K User C Other)
(choice : C)
(message : MIR.AssertKind)
(unwind : MIR.UnwindAction)
:
MachineHooks.M K User Unit
Read only the operands read by the source: index before length for bounds, required before found for alignment, no diagnostic operand reads otherwise.
Equations
- One or more equations did not get rendered due to their size.