Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

ICE related to pointer comparisons #26495

Closed
whitequark opened this issue Jun 22, 2015 · 1 comment
Closed

ICE related to pointer comparisons #26495

whitequark opened this issue Jun 22, 2015 · 1 comment

Comments

@whitequark
Copy link
Member

Repro:

pub trait Widget {}

pub trait Container {
    fn remove(&mut self, widget: &Widget) -> Box<Widget>;
}

pub struct BoxLayout {
    children: Vec<Box<Widget>>,
}

impl Container for BoxLayout {
    fn remove(&mut self, widget: &Widget) -> Box<Widget> {
        let index = self.children.iter().position(|elem| {
            (&**elem as *const _) == (widget as *const _)
        });
        panic!();
    }
}

fn main(){}

Backtrace: unable to acquire; rustc dies with SIGILL inside the unwinder.

Assertion:

thread 'rustc' panicked at 'assertion failed: self.appropriate_rvalue_mode(bcx.ccx()) == ByValue', src/librustc_trans/trans/datum.rs:634
@mitaa
Copy link
Contributor

mitaa commented Jun 22, 2015

dup of #25768 (see rust-lang/rfcs#1135)

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants