Skip to content

[MIR] Variable dropped before use #31853

Closed
@nagisa

Description

@nagisa
#![feature(rustc_attrs)]

pub struct D(u32);

impl Drop for D {
    fn drop(&mut self) {}
}

#[rustc_mir(graphviz="mir.gv")]
fn mir() -> D {
    let mut d = D(1);
    d
}

will result in

fn() -> D {
    let mut var0: D; // d
    let mut tmp0: ();
    let mut tmp1: D;

    bb0: {
        var0 = D(const 1);
        drop(var0) -> bb2;         // drop
    }

    bb1: {
        return;
    }

    bb2: {
        tmp1 = var0;              // then use
        return = tmp1;
        drop(tmp1) -> bb1;
    }
}

This is likely to be caused by me.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-MIRArea: Mid-level IR (MIR) - https://blog.rust-lang.org/2016/04/19/MIR.html

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions