Skip to content

ICE with compound assignment and Drop::finalize #5959

Closed
@euphoris

Description

@euphoris
struct matrix;

impl Drop for matrix {
    fn finalize(&self) {}
}

impl Add<matrix, matrix> for matrix {
    fn add(&self, _rhs: &matrix) -> matrix{
        matrix
    }
}

fn main(){
    let mut m = matrix;
    m += matrix; // an ICE is occured
    //m = m + matrix; // not occured
    info!(m);
}

rustc shows the following error messages:

$ RUST_LOG=rustc=1,::rt::backtrace rustc ice.rs
rust: task failed at 'assertion failed: !bcx.ccx().maps.moves_map.contains(&arg_expr.id)', *****/rust-0.6/src/librustc/middle/trans/callee.rs:705
error: internal compiler error: unexpected failure
note: the compiler hit an unexpected failure path. this is a bug
note: try running with RUST_LOG=rustc=1,::rt::backtrace to get further details and report the results to github.com/mozilla/rust/issues
rust: task failed at 'explicit failure', *****/rust-0.6/src/librustc/rustc.rc:357
rust: domain main @0x7fc2a0818e10 root task failed

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-codegenArea: Code generationA-destructorsArea: Destructors (`Drop`, …)I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions