Module rustc_middle::mir::syntax
source · Expand description
This defines the syntax of MIR, i.e., the set of available MIR operations, and other definitions closely related to MIR semantics. This is in a dedicated file so that changes to this file can be reviewed more carefully. The intention is that this file only contains datatype declarations, no code.
Modules
Structs
Places roughly correspond to a “location in memory.” Places in MIR are the same mathematical
object as places in Rust. This of course means that what exactly they are is undecided and part
of the Rust memory model. However, they will likely contain at least the following pieces of
information in some form:
Enums
Information about an assertion failure.
The
FakeReadCause
describes the type of pattern why a FakeRead statement exists.Represents the “flavors” of MIR.
An operand in MIR represents a “value” in Rust, the definition of which is undecided and part of
the memory model. One proposal for a definition of values can be found on UCG.
The different kinds of projections that can be used in the projection of a
Place
.Describes what kind of retag is to be performed.
The various kinds of rvalues that can appear in MIR.
The various kinds of statements that can appear in MIR.
The various kinds of terminators, representing ways of exiting from a basic block.
Type Definitions
Type for MIR
Assert
terminator error messages.Alias for projections as they appear in places, where the base is a place
and the index is a local.
Alias for projections that appear in
PlaceBuilder::Upvar
, for which
we cannot provide any field types.