Struct rustc::mir::Mir [] [src]

pub struct Mir<'tcx> {
    pub visibility_scopes: IndexVec<VisibilityScope, VisibilityScopeData>,
    pub promoted: IndexVec<Promoted, Mir<'tcx>>,
    pub return_ty: Ty<'tcx>,
    pub local_decls: IndexVec<Local, LocalDecl<'tcx>>,
    pub arg_count: usize,
    pub upvar_decls: Vec<UpvarDecl>,
    pub spread_arg: Option<Local>,
    pub span: Span,
    // some fields omitted
}
🔬 This is a nightly-only experimental API. (rustc_private)

Lowered representation of a single function.

Fields

🔬 This is a nightly-only experimental API. (rustc_private)

List of visibility (lexical) scopes; these are referenced by statements and used (eventually) for debuginfo. Indexed by a VisibilityScope.

🔬 This is a nightly-only experimental API. (rustc_private)

Rvalues promoted from this function, such as borrows of constants. Each of them is the Mir of a constant with the fn's type parameters in scope, but a separate set of locals.

🔬 This is a nightly-only experimental API. (rustc_private)

Return type of the function.

🔬 This is a nightly-only experimental API. (rustc_private)

Declarations of locals.

The first local is the return value pointer, followed by arg_count locals for the function arguments, followed by any user-declared variables and temporaries.

🔬 This is a nightly-only experimental API. (rustc_private)

Number of arguments this function takes.

Starting at local 1, arg_count locals will be provided by the caller and can be assumed to be initialized.

If this MIR was built for a constant, this will be 0.

🔬 This is a nightly-only experimental API. (rustc_private)

Names and capture modes of all the closure upvars, assuming the first argument is either the closure or a reference to it.

🔬 This is a nightly-only experimental API. (rustc_private)

Mark an argument local (which must be a tuple) as getting passed as its individual components at the LLVM level.

This is used for the "rust-call" ABI.

🔬 This is a nightly-only experimental API. (rustc_private)

A span representing this MIR, for error reporting

Methods

impl<'tcx> Mir<'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Returns an iterator over all temporaries.

🔬 This is a nightly-only experimental API. (rustc_private)

Returns an iterator over all user-declared locals.

🔬 This is a nightly-only experimental API. (rustc_private)

Returns an iterator over all function arguments.

🔬 This is a nightly-only experimental API. (rustc_private)

Returns an iterator over all user-defined variables and compiler-generated temporaries (all locals that are neither arguments nor the return pointer).

🔬 This is a nightly-only experimental API. (rustc_private)

Changes a statement to a nop. This is both faster than deleting instructions and avoids invalidating statement indices in Locations.

Trait Implementations

impl<'tcx> Clone for Mir<'tcx>
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl<'tcx> Encodable for Mir<'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

deprecated in favor of rustc-serialize on crates.io

impl<'tcx> Decodable for Mir<'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

deprecated in favor of rustc-serialize on crates.io

impl<'tcx> Debug for Mir<'tcx>
[src]

Formats the value using the given formatter.

impl<'tcx> Index<BasicBlock> for Mir<'tcx>
[src]

The returned type after indexing

The method for the indexing (container[index]) operation

impl<'tcx> IndexMut<BasicBlock> for Mir<'tcx>
[src]

The method for the mutable indexing (container[index]) operation

impl<'tcx> ControlFlowGraph for Mir<'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

impl<'a, 'b> GraphPredecessors<'b> for Mir<'a>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

impl<'a, 'b> GraphSuccessors<'b> for Mir<'a>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

impl<'tcx> TypeFoldable<'tcx> for Mir<'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Indicates whether this value references only 'global' types/lifetimes that are the same regardless of what fn we are in. This is used for caching. Errs on the side of returning false. Read more