Skip to content

casting enum to itself results in an ICE #26426

New issue

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

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

Already on GitHub? Sign in to your account

Closed
whitequark opened this issue Jun 19, 2015 · 2 comments
Closed

casting enum to itself results in an ICE #26426

whitequark opened this issue Jun 19, 2015 · 2 comments

Comments

@whitequark
Copy link
Member

Excerpt:

#[derive(Copy, Clone, PartialEq, Eq, Debug)]
#[repr(i32)]
pub enum Flicker {
    AC_60Hz         = 0,
    AC_50Hz         = 1,
    DC              = 2,
}
extern {
    fn Toupcam_get_HZ(h: *mut Handle, nHZ: *mut Flicker) -> HRESULT;
}
struct Handle;
struct Toupcam { handle: *mut Handle };
impl Toupcam {
    pub fn flicker_compensation(self: &mut Toupcam) -> Flicker {
        unsafe {
            let mut hz: Flicker = std::mem::zeroed();
            accept(Toupcam_get_HZ(self.handle, &mut hz));
            hz as Flicker
            // hz ← this works
        }
    }
}

rustc:

rustc 1.1.0-nightly (c033d9828 2015-05-09) (built 2015-05-09)

Backtrace:

thread 'rustc' panicked at 'Box<Any>', /home/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libsyntax/diagnostic.rs:230

stack backtrace:
   1:     0x7f95e0cee149 - sys::backtrace::write::hf630cda5c057d925shs
   2:     0x7f95e0cf60c9 - panicking::on_panic::h3cbeeb6d9cf9a057vXw
   3:     0x7f95e0cb62a2 - rt::unwind::begin_unwind_inner::ha89a41e3e4923fa0FCw
   4:     0x7f95de093c6d - rt::unwind::begin_unwind::h7315671891021698504
   5:     0x7f95de09432b - diagnostic::Handler::bug::h1cc046814848dce7f8B
   6:     0x7f95dec8e60b - session::Session::bug::hfdd24549514c30bfUOq
   7:     0x7f95dfb8bf4b - trans::expr::trans_imm_cast::hf676a2bafa8a3d58OpC
   8:     0x7f95dfb80807 - trans::expr::trans_unadjusted::haa8fe9f5b3216facvCA
   9:     0x7f95dfb553ed - trans::expr::trans_into::h5aace87d45cda18fl9z
  10:     0x7f95dfad92e6 - trans::controlflow::trans_block::h83622bcb20d2285cw3u
  11:     0x7f95dfb8179b - trans::expr::trans_rvalue_dps_unadjusted::h3e4f1c626cf22366Y7A
  12:     0x7f95dfb553cc - trans::expr::trans_into::h5aace87d45cda18fl9z
  13:     0x7f95dfad92e6 - trans::controlflow::trans_block::h83622bcb20d2285cw3u
  14:     0x7f95dfad7bb6 - trans::base::trans_closure::h1623429c4a8ffbebjHh
  15:     0x7f95dfad98da - trans::base::trans_fn::hc7a5cef88d3731c91Rh
  16:     0x7f95dfadd6b2 - trans::base::trans_item::h1a43519c5bd06690dgi
  17:     0x7f95dfaead07 - trans::base::trans_crate::hadadeed95ebf196004i
  18:     0x7f95e1245d6a - driver::phase_4_translate_to_llvm::h7a1973fec1c0688cnOa
  19:     0x7f95e121e136 - driver::compile_input::h020e6002d10336a4Qba
  20:     0x7f95e12d7d61 - run_compiler::he8fc8a587311be2465b
  21:     0x7f95e12d55b2 - boxed::F.FnBox<A>::call_box::h13553308903082253150
  22:     0x7f95e12d4b79 - rt::unwind::try::try_fn::h3807368746205497482
  23:     0x7f95e0d69068 - rust_try_inner
  24:     0x7f95e0d69055 - rust_try
  25:     0x7f95e12d4e14 - boxed::F.FnBox<A>::call_box::h15011448770904444204
  26:     0x7f95e0cf4e61 - sys::thread::Thread::new::thread_start::h8bc03e8ed99cab4d1Iv
  27:     0x7f95dad8f0a3 - start_thread
  28:     0x7f95e094104c - clone
  29:                0x0 - <unknown>
@whitequark whitequark changed the title casting enum itself results in an ICE casting enum to itself results in an ICE Jun 19, 2015
@mitaa
Copy link
Contributor

mitaa commented Jun 19, 2015

This should compile on the nightly channel - can you confirm that?
( -> #25143 which was presumably fixed by #24333 )

@whitequark
Copy link
Member Author

Yeah.

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

No branches or pull requests

2 participants