Skip to content

Const generic ICE: assertion failed: key.value.promoted.is_none() #61432

Closed

Description

@goodmanjonathan

Promotion of const generic parameters causes the compiler to crash.

#![feature(const_generics)]

fn promote<const N: i32>() {
    // works:
    //
    // let n = N;
    // &n;
    
    &N;
}

fn main() {
    promote::<0>();
}
$ RUST_BACKTRACE=1 rustc +nightly promotion_const_generics_ice.rs
warning: the feature `const_generics` is incomplete and may cause the compiler to crash
 --> promotion_const_generics_ice.rs:1:12
  |
1 | #![feature(const_generics)]
  |            ^^^^^^^^^^^^^^

thread 'rustc' panicked at 'assertion failed: key.value.promoted.is_none()', src/librustc_mir/const_eval.rs:577:17
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.25/src/backtrace/libunwind.rs:97
   1: backtrace::backtrace::trace_unsynchronized
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.25/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:47
   3: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:36
   4: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:197
   5: std::panicking::default_hook
             at src/libstd/panicking.rs:211
   6: rustc::util::common::panic_hook
   7: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:478
   8: std::panicking::begin_panic
   9: rustc_mir::const_eval::const_eval_provider
  10: rustc::ty::query::__query_compute::const_eval
  11: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors for rustc::ty::query::queries::const_eval>::compute
  12: rustc::dep_graph::graph::DepGraph::with_task_impl
  13: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query
  14: rustc_mir::monomorphize::collector::collect_items_rec
  15: rustc_mir::monomorphize::collector::collect_items_rec
  16: rustc_mir::monomorphize::collector::collect_crate_mono_items::{{closure}}
  17: rustc::util::common::time
  18: rustc_mir::monomorphize::collector::collect_crate_mono_items
  19: rustc::util::common::time
  20: rustc_mir::monomorphize::partitioning::collect_and_partition_mono_items
  21: rustc::ty::query::__query_compute::collect_and_partition_mono_items
  22: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors for rustc::ty::query::queries::collect_and_partition_mono_items>::compute
  23: rustc::dep_graph::graph::DepGraph::with_task_impl
  24: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query
  25: rustc_codegen_ssa::base::codegen_crate
  26: <rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_utils::codegen_backend::CodegenBackend>::codegen_crate
  27: rustc::util::common::time
  28: rustc_interface::passes::start_codegen
  29: rustc::ty::context::tls::enter_global
  30: rustc_interface::passes::BoxedGlobalCtxt::access::{{closure}}
  31: rustc_interface::passes::create_global_ctxt::{{closure}}
  32: rustc_interface::passes::BoxedGlobalCtxt::enter
  33: rustc_interface::queries::<impl rustc_interface::interface::Compiler>::ongoing_codegen
  34: rustc_interface::interface::run_compiler_in_existing_thread_pool
  35: std::thread::local::LocalKey<T>::with
  36: scoped_tls::ScopedKey<T>::set
  37: syntax::with_globals
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
query stack during panic:
#0 [const_eval] const-evaluating + checking `promote`
#1 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.37.0-nightly (7840a0b75 2019-05-31) running on x86_64-unknown-linux-gnu

Activity

  1. added
    A-const-evalArea: Constant evaluation, covers all const contexts (static, const fn, ...)
    A-const-genericsArea: const generics (parameters and arguments)
    I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
    T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.
    on Jun 1, 2019
  2. varkor commented on Jun 1, 2019

    @varkor
    Contributor
  3. czipperz commented on Jun 2, 2019

    @czipperz
    Contributor

    So what is the expected behavior here?

  4. oli-obk commented on Jun 2, 2019

    @oli-obk
    Contributor

    @varkor why shouldn't we? Like ok, we shouldn't right now, but why shouldn't ever? We are already promoting &std::mem::size_of::<T>() which seems just as problematic. This is just a limitation of the miri engine, that I wager will be simple to solve. Especially when looking at where this is happening (in the collector). Everything is monomorphic at that point I believe?

  5. varkor commented on Jun 2, 2019

    @varkor
    Contributor

    Ah, that is true. It should be okay, you're right.

  6. oli-obk commented on Jun 2, 2019

    @oli-obk
    Contributor

    Ok, awesome, I was worried for a bit that we screwed up promotion. Now let's figure out what's going wrong here.

    As far as I can tell, the only way to get to a TooGeneric is by substituting and ending up with an unsubstituted (needs_subst) value. Our substitution machinery is a little whacky as clippy has already encountered, but if size_of calls can get promoted, I don't know why const generics would go down a different path. We'll need to run the repro from this issue through a rustc with RUSTC_LOG=rustc_mir::interpret,rustc::mir::interpret RUST_CTFE_BACKTRACE=immediate to get some detailed info on those errors.

  7. jplatte commented on Jun 11, 2019

    @jplatte
    Contributor

    This also happens when passing a const generic variable (directly) to println! and friends.

  8. oli-obk commented on Jun 21, 2019

    @oli-obk
    Contributor

    🤣 uh, so, I found this

    ConstValue::Param(_) => return err!(TooGeneric), // FIXME(oli-obk): try to monomorphize

    Basically the fix is to call self.monomorphize on constant.literal in

    Constant(ref constant) => self.eval_const_to_op(constant.literal, layout)?,
    and turn the return in
    ConstValue::Param(_) => return err!(TooGeneric), // FIXME(oli-obk): try to monomorphize
    into a bug! call

    This change is blocked on the eval_context.rs changes from #62012

  9. added
    E-easyCall for participation: Easy difficulty. Experience needed to fix: Not much. Good first issue.
    on Jun 21, 2019
  10. varkor commented on Jun 25, 2019

    @varkor
    Contributor

    Making this change:

    -            Constant(ref constant) => self.eval_const_to_op(constant.literal, layout)?,
    +            Constant(ref constant) => {
    +                self.eval_const_to_op(self.monomorphize(constant.literal)?, layout)?
    +            }

    results in:

    error: internal compiler error: src/librustc/ty/subst.rs:557: type parameter `Self/#0` (Self/0) out of range when substituting (root type=Some(<Self as float::Float>::Int)) substs=[]
    

    while compiling rustc.

    Details
    thread 'rustc' panicked at 'Box<Any>', src/librustc_errors/lib.rs:578:9
    stack backtrace:
       0: std::sys_common::backtrace::print
       1: std::panicking::default_hook::{{closure}}
       2: std::panicking::default_hook
       3: rustc::util::common::panic_hook
       4: std::panicking::rust_panic_with_hook
       5: std::panicking::begin_panic
       6: rustc_errors::Handler::span_bug
       7: rustc::util::bug::opt_span_bug_fmt::{{closure}}
       8: rustc::ty::context::tls::with_opt::{{closure}}
       9: rustc::ty::context::tls::with_context_opt
      10: rustc::ty::context::tls::with_opt
      11: rustc::util::bug::opt_span_bug_fmt
      12: rustc::util::bug::span_bug_fmt
      13: <rustc::ty::subst::SubstFolder as rustc::ty::fold::TypeFolder>::fold_ty
      14: <smallvec::SmallVec<A> as core::iter::traits::collect::FromIterator<<A as smallvec::Array>::Item>>::from_iter
      15: rustc::ty::fold::TypeFoldable::fold_with
      16: rustc::ty::structural_impls::<impl rustc::ty::fold::TypeFoldable for &rustc::ty::TyS>::super_fold_with
      17: <rustc::ty::subst::SubstFolder as rustc::ty::fold::TypeFolder>::fold_ty
      18: <rustc::ty::subst::SubstFolder as rustc::ty::fold::TypeFolder>::fold_const
      19: rustc_mir::interpret::operand::<impl rustc_mir::interpret::eval_context::InterpretCx<M>>::eval_operand
      20: rustc_mir::interpret::step::<impl rustc_mir::interpret::eval_context::InterpretCx<M>>::run
      21: rustc_mir::const_eval::eval_body_using_ecx
      22: rustc_mir::const_eval::const_eval_raw_provider
      23: rustc::ty::query::__query_compute::const_eval_raw
      24: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors for rustc::ty::query::queries::const_eval_raw>::compute
      25: rustc::dep_graph::graph::DepGraph::with_task_impl
      26: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query
      27: rustc_mir::const_eval::const_eval_provider
      28: rustc::ty::query::__query_compute::const_eval
      29: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors for rustc::ty::query::queries::const_eval>::compute
      30: rustc::dep_graph::graph::DepGraph::with_task_impl
      31: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query
      32: rustc_mir::const_eval::const_eval_provider
      33: rustc::ty::query::__query_compute::const_eval
      34: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors for rustc::ty::query::queries::const_eval>::compute
      35: rustc::dep_graph::graph::DepGraph::with_task_impl
      36: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query
      37: rustc_mir::monomorphize::collector::collect_const
      38: rustc::mir::visit::Visitor::super_rvalue
      39: <rustc_mir::monomorphize::collector::MirNeighborCollector as rustc::mir::visit::Visitor>::visit_rvalue
      40: rustc::mir::visit::Visitor::visit_body
      41: rustc_mir::monomorphize::collector::collect_items_rec
      42: rustc_mir::monomorphize::collector::collect_items_rec
      43: rustc_mir::monomorphize::collector::collect_crate_mono_items::{{closure}}
      44: rustc::util::common::time
      45: rustc_mir::monomorphize::collector::collect_crate_mono_items
      46: rustc::util::common::time
      47: rustc_mir::monomorphize::partitioning::collect_and_partition_mono_items
      48: rustc::ty::query::__query_compute::collect_and_partition_mono_items
      49: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors for rustc::ty::query::queries::collect_and_partition_mono_items>::compute
      50: rustc::dep_graph::graph::DepGraph::with_task_impl
      51: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query
      52: rustc_codegen_ssa::base::codegen_crate
      53: <rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_utils::codegen_backend::CodegenBackend>::codegen_crate
      54: rustc::util::common::time
      55: rustc_interface::passes::start_codegen
      56: rustc::ty::context::tls::enter_global
      57: rustc_interface::passes::BoxedGlobalCtxt::access::{{closure}}
      58: rustc_interface::passes::create_global_ctxt::{{closure}}
      59: rustc_interface::passes::BoxedGlobalCtxt::enter
      60: rustc_interface::queries::Query<T>::compute
      61: rustc_interface::queries::<impl rustc_interface::interface::Compiler>::ongoing_codegen
      62: rustc_interface::interface::run_compiler_in_existing_thread_pool
      63: std::thread::local::LocalKey<T>::with
      64: scoped_tls::ScopedKey<T>::set
      65: syntax::with_globals
    note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
    query stack during panic:
    #0 [const_eval_raw] const-evaluating `<f32 as float::Float>::EXPONENT_MASK`
    #1 [const_eval] const-evaluating + checking `<f32 as float::Float>::EXPONENT_MASK`
    #2 [const_eval] const-evaluating + checking `<f32 as float::Float>::EXPONENT_MASK`
    #3 [collect_and_partition_mono_items] collect_and_partition_mono_items
    end of query stack
    error: aborting due to previous error
    
    (I haven't looked into the error yet.)
  11. oli-obk commented on Jun 25, 2019

    @oli-obk
    Contributor

    heh, one can always trust in libapfloat to expose const eval bugs

    can you run with RUSTC_LOG=rustc_mir::interpret and dump that log, too? It looks to me like the instance field of the Frame has the wrong Substs

  12. JohnTitor commented on Jun 25, 2019

    @JohnTitor
    Member

    @oli-obk FWIW I got this log.

  13. oli-obk commented on Jun 25, 2019

    @oli-obk
    Contributor

    ah, unfortunately the rustc you're using is built without debug flags, so we're only getting INFO level logs.

  14. JohnTitor commented on Jun 25, 2019

    @JohnTitor
    Member

    Oops. If no one has posted yet, I'll paste later.

  15. varkor commented on Jun 25, 2019

    @varkor
    Contributor

    Here's the lower section. I can post more if this doesn't contain all the relevant information, but the full trace is long.

    Details
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: generate stacktrace: [
        FrameInfo {
            call_site: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/int/shift.rs:55:5: 70:6,
            instance: Instance {
                def: Item(
                    DefId(0:175 ~ compiler_builtins[ef6f]::int[0]::shift[0]::Lshr[0]::lshr[0]),
                ),
                substs: [
                    Self,
                ],
            },
            lint_root: None,
        },
    ], None
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: generate stacktrace: [
        FrameInfo {
            call_site: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/int/shift.rs:55:5: 70:6,
            instance: Instance {
                def: Item(
                    DefId(0:175 ~ compiler_builtins[ef6f]::int[0]::shift[0]::Lshr[0]::lshr[0]),
                ),
                substs: [
                    Self,
                ],
            },
            lint_root: None,
        },
    ], None
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: generate stacktrace: [
        FrameInfo {
            call_site: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/int/shift.rs:55:5: 70:6,
            instance: Instance {
                def: Item(
                    DefId(0:175 ~ compiler_builtins[ef6f]::int[0]::shift[0]::Lshr[0]::lshr[0]),
                ),
                substs: [
                    Self,
                ],
            },
            lint_root: None,
        },
    ], None
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: generate stacktrace: [
        FrameInfo {
            call_site: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/int/shift.rs:55:5: 70:6,
            instance: Instance {
                def: Item(
                    DefId(0:175 ~ compiler_builtins[ef6f]::int[0]::shift[0]::Lshr[0]::lshr[0]),
                ),
                substs: [
                    Self,
                ],
            },
            lint_root: None,
        },
    ], None
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: generate stacktrace: [
        FrameInfo {
            call_site: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/int/shift.rs:55:5: 70:6,
            instance: Instance {
                def: Item(
                    DefId(0:175 ~ compiler_builtins[ef6f]::int[0]::shift[0]::Lshr[0]::lshr[0]),
                ),
                substs: [
                    Self,
                ],
            },
            lint_root: None,
        },
    ], None
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: generate stacktrace: [
        FrameInfo {
            call_site: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/int/shift.rs:55:5: 70:6,
            instance: Instance {
                def: Item(
                    DefId(0:175 ~ compiler_builtins[ef6f]::int[0]::shift[0]::Lshr[0]::lshr[0]),
                ),
                substs: [
                    Self,
                ],
            },
            lint_root: None,
        },
    ], None
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: generate stacktrace: [
        FrameInfo {
            call_site: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/int/shift.rs:55:5: 70:6,
            instance: Instance {
                def: Item(
                    DefId(0:175 ~ compiler_builtins[ef6f]::int[0]::shift[0]::Lshr[0]::lshr[0]),
                ),
                substs: [
                    Self,
                ],
            },
            lint_root: None,
        },
    ], None
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: generate stacktrace: [
        FrameInfo {
            call_site: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/int/shift.rs:55:5: 70:6,
            instance: Instance {
                def: Item(
                    DefId(0:175 ~ compiler_builtins[ef6f]::int[0]::shift[0]::Lshr[0]::lshr[0]),
                ),
                substs: [
                    Self,
                ],
            },
            lint_root: None,
        },
    ], None
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: generate stacktrace: [
        FrameInfo {
            call_site: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/int/shift.rs:55:5: 70:6,
            instance: Instance {
                def: Item(
                    DefId(0:175 ~ compiler_builtins[ef6f]::int[0]::shift[0]::Lshr[0]::lshr[0]),
                ),
                substs: [
                    Self,
                ],
            },
            lint_root: None,
        },
    ], None
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: push_stack_frame: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/int/mod.rs:82:1: 87:2: num_bbs: 7
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) int::unwrap::<T>
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: push_stack_frame: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/float/cmp.rs:6:10: 6:15: num_bbs: 2
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <float::cmp::Result as rustc_std_workspace_core::clone::Clone>::clone
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: push_stack_frame: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/float/conv.rs:157:10: 157:19: num_bbs: 7
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <float::conv::Sign as rustc_std_workspace_core::cmp::PartialEq>::eq
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f32 as float::Float>::ZERO
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f32 as float::Float>::ONE
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f32 as float::Float>::BITS
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f32 as float::Float>::SIGNIFICAND_BITS
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f32 as float::Float>::SIGN_MASK
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:89 ~ compiler_builtins[ef6f]::float[0]::Float[0]::BITS[0]), [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: load mir Item(DefId(0:315 ~ compiler_builtins[ef6f]::float[0]::{{impl}}[0]::BITS[0]))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f32 as float::Float>::BITS
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _0 = const 32u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 297:  __ __ __ __ (4 bytes, alignment 4) (stack)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 32u32: Immediate(Scalar(0x00000020))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Ptr(MemPlace { ptr: AllocId(297).0x0, align: Align { pow2: 2 }, meta: None }) <- Scalar(0x00000020): u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 297:  20 00 00 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: return
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 297:  20 00 00 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: LEAVING(0) <f32 as float::Float>::BITS
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::intern: InternVisitor::intern AllocId(297).0x0 with Immutable
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Sub: Scalar(0x00000020) (u32), Scalar(0x00000001) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:89 ~ compiler_builtins[ef6f]::float[0]::Float[0]::BITS[0]), [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Shl: Scalar(0x00000001) (u32), Scalar(0x0000001f) (u32)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f32 as float::Float>::SIGNIFICAND_MASK
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:90 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGNIFICAND_BITS[0]), [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: load mir Item(DefId(0:316 ~ compiler_builtins[ef6f]::float[0]::{{impl}}[0]::SIGNIFICAND_BITS[0]))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f32 as float::Float>::SIGNIFICAND_BITS
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _0 = const 23u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 298:  __ __ __ __ (4 bytes, alignment 4) (stack)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 23u32: Immediate(Scalar(0x00000017))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Ptr(MemPlace { ptr: AllocId(298).0x0, align: Align { pow2: 2 }, meta: None }) <- Scalar(0x00000017): u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 298:  17 00 00 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: return
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 298:  17 00 00 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: LEAVING(0) <f32 as float::Float>::SIGNIFICAND_BITS
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::intern: InternVisitor::intern AllocId(298).0x0 with Immutable
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Shl: Scalar(0x00000001) (u32), Scalar(0x00000017) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:90 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGNIFICAND_BITS[0]), [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Sub: Scalar(0x00800000) (u32), Scalar(0x00000001) (u32)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f32 as float::Float>::IMPLICIT_BIT
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:90 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGNIFICAND_BITS[0]), [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Shl: Scalar(0x00000001) (u32), Scalar(0x00000017) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:90 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGNIFICAND_BITS[0]), [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f32,
    ]
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f32 as float::Float>::EXPONENT_MASK
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:95 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGNIFICAND_MASK[0]), [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: load mir Item(DefId(0:318 ~ compiler_builtins[ef6f]::float[0]::{{impl}}[0]::SIGNIFICAND_MASK[0]))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f32 as float::Float>::SIGNIFICAND_MASK
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: StorageLive(_1)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1 is now live
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _2 = CheckedShl(const 1u32, const <f32 as float::Float>::SIGNIFICAND_BITS)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _2: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 1u32: Immediate(Scalar(0x00000001))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:90 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGNIFICAND_BITS[0]), [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const <f32 as float::Float>::SIGNIFICAND_BITS: Indirect(MemPlace { ptr: AllocId(298).0x0, align: Align { pow2: 2 }, meta: None })
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Shl: Scalar(0x00000001) (u32), Scalar(0x00000017) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _2 } <- ScalarPair(0x00800000, 0x00): (u32, bool)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _2: (0x00800000, 0x00)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: assert(!move (_2.1: bool), "attempt to shift left with overflow") -> bb1
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_2.1: bool): Immediate(Scalar(0x00))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: // bb1
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _1 = move (_2.0: u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00800000))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_2.0: u32): Immediate(Scalar(0x00800000))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _1 } <- Scalar(0x00800000): u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1: 0x00800000
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _3 = CheckedSub(move _1, const 1u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _3: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00800000))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move _1: Immediate(Scalar(0x00800000))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 1u32: Immediate(Scalar(0x00000001))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Sub: Scalar(0x00800000) (u32), Scalar(0x00000001) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _3 } <- ScalarPair(0x007fffff, 0x00): (u32, bool)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _3: (0x007fffff, 0x00)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: assert(!move (_3.1: bool), "attempt to subtract with overflow") -> bb2
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_3.1: bool): Immediate(Scalar(0x00))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: // bb2
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _0 = move (_3.0: u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 299:  __ __ __ __ (4 bytes, alignment 4) (stack)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x007fffff))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_3.0: u32): Immediate(Scalar(0x007fffff))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Ptr(MemPlace { ptr: AllocId(299).0x0, align: Align { pow2: 2 }, meta: None }) <- Scalar(0x007fffff): u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 299:  ff ff 7f 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: return
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 299:  ff ff 7f 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: LEAVING(0) <f32 as float::Float>::SIGNIFICAND_MASK
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::intern: InternVisitor::intern AllocId(299).0x0 with Immutable
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:94 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGN_MASK[0]), [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: load mir Item(DefId(0:317 ~ compiler_builtins[ef6f]::float[0]::{{impl}}[0]::SIGN_MASK[0]))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f32 as float::Float>::SIGN_MASK
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: StorageLive(_1)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1 is now live
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _2 = CheckedSub(const <f32 as float::Float>::BITS, const 1u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _2: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:89 ~ compiler_builtins[ef6f]::float[0]::Float[0]::BITS[0]), [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const <f32 as float::Float>::BITS: Indirect(MemPlace { ptr: AllocId(297).0x0, align: Align { pow2: 2 }, meta: None })
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 1u32: Immediate(Scalar(0x00000001))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Sub: Scalar(0x00000020) (u32), Scalar(0x00000001) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _2 } <- ScalarPair(0x0000001f, 0x00): (u32, bool)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _2: (0x0000001f, 0x00)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: assert(!move (_2.1: bool), "attempt to subtract with overflow") -> bb1
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_2.1: bool): Immediate(Scalar(0x00))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: // bb1
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _1 = move (_2.0: u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x0000001f))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_2.0: u32): Immediate(Scalar(0x0000001f))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _1 } <- Scalar(0x0000001f): u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1: 0x0000001f
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _3 = CheckedShl(const 1u32, move _1)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _3: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 1u32: Immediate(Scalar(0x00000001))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x0000001f))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move _1: Immediate(Scalar(0x0000001f))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Shl: Scalar(0x00000001) (u32), Scalar(0x0000001f) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _3 } <- ScalarPair(0x80000000, 0x00): (u32, bool)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _3: (0x80000000, 0x00)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: assert(!move (_3.1: bool), "attempt to shift left with overflow") -> bb2
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_3.1: bool): Immediate(Scalar(0x00))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: // bb2
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _0 = move (_3.0: u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 300:  __ __ __ __ (4 bytes, alignment 4) (stack)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x80000000))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_3.0: u32): Immediate(Scalar(0x80000000))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Ptr(MemPlace { ptr: AllocId(300).0x0, align: Align { pow2: 2 }, meta: None }) <- Scalar(0x80000000): u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 300:  00 00 00 80 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: return
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 300:  00 00 00 80 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: LEAVING(0) <f32 as float::Float>::SIGN_MASK
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::intern: InternVisitor::intern AllocId(300).0x0 with Immutable
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op BitOr: Scalar(0x80000000) (u32), Scalar(0x007fffff) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:94 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGN_MASK[0]), [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:95 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGNIFICAND_MASK[0]), [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running unary op Not: 0x807fffff (u32)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f64 as float::Float>::ZERO
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f64 as float::Float>::ONE
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f64 as float::Float>::BITS
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f64 as float::Float>::SIGNIFICAND_BITS
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f64 as float::Float>::SIGN_MASK
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:89 ~ compiler_builtins[ef6f]::float[0]::Float[0]::BITS[0]), [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: load mir Item(DefId(0:331 ~ compiler_builtins[ef6f]::float[0]::{{impl}}[1]::BITS[0]))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f64 as float::Float>::BITS
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _0 = const 64u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 301:  __ __ __ __ (4 bytes, alignment 4) (stack)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 64u32: Immediate(Scalar(0x00000040))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Ptr(MemPlace { ptr: AllocId(301).0x0, align: Align { pow2: 2 }, meta: None }) <- Scalar(0x00000040): u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 301:  40 00 00 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: return
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 301:  40 00 00 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: LEAVING(0) <f64 as float::Float>::BITS
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::intern: InternVisitor::intern AllocId(301).0x0 with Immutable
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Sub: Scalar(0x00000040) (u32), Scalar(0x00000001) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:89 ~ compiler_builtins[ef6f]::float[0]::Float[0]::BITS[0]), [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Shl: Scalar(0x0000000000000001) (u64), Scalar(0x0000003f) (u32)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f64 as float::Float>::SIGNIFICAND_MASK
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:90 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGNIFICAND_BITS[0]), [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: load mir Item(DefId(0:332 ~ compiler_builtins[ef6f]::float[0]::{{impl}}[1]::SIGNIFICAND_BITS[0]))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f64 as float::Float>::SIGNIFICAND_BITS
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _0 = const 52u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 302:  __ __ __ __ (4 bytes, alignment 4) (stack)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 52u32: Immediate(Scalar(0x00000034))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Ptr(MemPlace { ptr: AllocId(302).0x0, align: Align { pow2: 2 }, meta: None }) <- Scalar(0x00000034): u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 302:  34 00 00 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: return
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 302:  34 00 00 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: LEAVING(0) <f64 as float::Float>::SIGNIFICAND_BITS
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::intern: InternVisitor::intern AllocId(302).0x0 with Immutable
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Shl: Scalar(0x0000000000000001) (u64), Scalar(0x00000034) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:90 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGNIFICAND_BITS[0]), [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Sub: Scalar(0x0010000000000000) (u64), Scalar(0x0000000000000001) (u64)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f64 as float::Float>::IMPLICIT_BIT
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:90 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGNIFICAND_BITS[0]), [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Shl: Scalar(0x0000000000000001) (u64), Scalar(0x00000034) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:90 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGNIFICAND_BITS[0]), [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f64,
    ]
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f64 as float::Float>::EXPONENT_MASK
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:95 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGNIFICAND_MASK[0]), [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: load mir Item(DefId(0:334 ~ compiler_builtins[ef6f]::float[0]::{{impl}}[1]::SIGNIFICAND_MASK[0]))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f64 as float::Float>::SIGNIFICAND_MASK
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: StorageLive(_1)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1 is now live
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _2 = CheckedShl(const 1u64, const <f64 as float::Float>::SIGNIFICAND_BITS)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _2: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 1u64: Immediate(Scalar(0x0000000000000001))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:90 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGNIFICAND_BITS[0]), [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const <f64 as float::Float>::SIGNIFICAND_BITS: Indirect(MemPlace { ptr: AllocId(302).0x0, align: Align { pow2: 2 }, meta: None })
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Shl: Scalar(0x0000000000000001) (u64), Scalar(0x00000034) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _2 } <- ScalarPair(0x0010000000000000, 0x00): (u64, bool)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _2: (0x0010000000000000, 0x00)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: assert(!move (_2.1: bool), "attempt to shift left with overflow") -> bb1
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_2.1: bool): Immediate(Scalar(0x00))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: // bb1
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _1 = move (_2.0: u64)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x0010000000000000))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_2.0: u64): Immediate(Scalar(0x0010000000000000))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _1 } <- Scalar(0x0010000000000000): u64
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1: 0x0010000000000000
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _3 = CheckedSub(move _1, const 1u64)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _3: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x0010000000000000))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move _1: Immediate(Scalar(0x0010000000000000))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 1u64: Immediate(Scalar(0x0000000000000001))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Sub: Scalar(0x0010000000000000) (u64), Scalar(0x0000000000000001) (u64)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _3 } <- ScalarPair(0x000fffffffffffff, 0x00): (u64, bool)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _3: (0x000fffffffffffff, 0x00)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: assert(!move (_3.1: bool), "attempt to subtract with overflow") -> bb2
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_3.1: bool): Immediate(Scalar(0x00))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: // bb2
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _0 = move (_3.0: u64)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(8) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 303:  __ __ __ __ __ __ __ __ (8 bytes, alignment 8) (stack)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x000fffffffffffff))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_3.0: u64): Immediate(Scalar(0x000fffffffffffff))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Ptr(MemPlace { ptr: AllocId(303).0x0, align: Align { pow2: 3 }, meta: None }) <- Scalar(0x000fffffffffffff): u64
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(8) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 303:  ff ff ff ff ff ff 0f 00 (8 bytes, alignment 8) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: return
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(8) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 303:  ff ff ff ff ff ff 0f 00 (8 bytes, alignment 8) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: LEAVING(0) <f64 as float::Float>::SIGNIFICAND_MASK
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::intern: InternVisitor::intern AllocId(303).0x0 with Immutable
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u64
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:94 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGN_MASK[0]), [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: load mir Item(DefId(0:333 ~ compiler_builtins[ef6f]::float[0]::{{impl}}[1]::SIGN_MASK[0]))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f64 as float::Float>::SIGN_MASK
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: StorageLive(_1)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1 is now live
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _2 = CheckedSub(const <f64 as float::Float>::BITS, const 1u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _2: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:89 ~ compiler_builtins[ef6f]::float[0]::Float[0]::BITS[0]), [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const <f64 as float::Float>::BITS: Indirect(MemPlace { ptr: AllocId(301).0x0, align: Align { pow2: 2 }, meta: None })
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 1u32: Immediate(Scalar(0x00000001))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Sub: Scalar(0x00000040) (u32), Scalar(0x00000001) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _2 } <- ScalarPair(0x0000003f, 0x00): (u32, bool)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _2: (0x0000003f, 0x00)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: assert(!move (_2.1: bool), "attempt to subtract with overflow") -> bb1
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_2.1: bool): Immediate(Scalar(0x00))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: // bb1
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _1 = move (_2.0: u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x0000003f))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_2.0: u32): Immediate(Scalar(0x0000003f))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _1 } <- Scalar(0x0000003f): u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1: 0x0000003f
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _3 = CheckedShl(const 1u64, move _1)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _3: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 1u64: Immediate(Scalar(0x0000000000000001))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x0000003f))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move _1: Immediate(Scalar(0x0000003f))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Shl: Scalar(0x0000000000000001) (u64), Scalar(0x0000003f) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _3 } <- ScalarPair(0x8000000000000000, 0x00): (u64, bool)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _3: (0x8000000000000000, 0x00)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: assert(!move (_3.1: bool), "attempt to shift left with overflow") -> bb2
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_3.1: bool): Immediate(Scalar(0x00))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: // bb2
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _0 = move (_3.0: u64)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(8) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 304:  __ __ __ __ __ __ __ __ (8 bytes, alignment 8) (stack)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x8000000000000000))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_3.0: u64): Immediate(Scalar(0x8000000000000000))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Ptr(MemPlace { ptr: AllocId(304).0x0, align: Align { pow2: 3 }, meta: None }) <- Scalar(0x8000000000000000): u64
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(8) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 304:  00 00 00 00 00 00 00 80 (8 bytes, alignment 8) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: return
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(8) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 304:  00 00 00 00 00 00 00 80 (8 bytes, alignment 8) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: LEAVING(0) <f64 as float::Float>::SIGN_MASK
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::intern: InternVisitor::intern AllocId(304).0x0 with Immutable
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u64
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op BitOr: Scalar(0x8000000000000000) (u64), Scalar(0x000fffffffffffff) (u64)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:94 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGN_MASK[0]), [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:95 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGNIFICAND_MASK[0]), [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f64,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running unary op Not: 0x800fffffffffffff (u64)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: push_stack_frame: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/int/sdiv.rs:94:26: 94:47: num_bbs: 3
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) int::sdiv::__divmodsi4::{{closure}}#0
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: push_stack_frame: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/int/sdiv.rs:99:26: 99:47: num_bbs: 3
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) int::sdiv::__divmoddi4::{{closure}}#0
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <u32 as int::Int>::BITS
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <u32 as int::Int>::ZERO
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <u32 as int::Int>::ONE
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <i32 as int::Int>::BITS
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <i32 as int::Int>::ZERO
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <i32 as int::Int>::ONE
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <u64 as int::Int>::BITS
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <u64 as int::Int>::ZERO
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <u64 as int::Int>::ONE
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <i64 as int::Int>::BITS
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <i64 as int::Int>::ZERO
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <i64 as int::Int>::ONE
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <u128 as int::Int>::BITS
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <u128 as int::Int>::ZERO
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <u128 as int::Int>::ONE
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <i128 as int::Int>::BITS
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <i128 as int::Int>::ZERO
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <i128 as int::Int>::ONE
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: push_stack_frame: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/mem.rs:9:1: 16:2: num_bbs: 7
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) mem::memcpy
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: push_stack_frame: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/mem.rs:19:1: 36:2: num_bbs: 15
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) mem::memmove
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: push_stack_frame: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/mem.rs:39:1: 46:2: num_bbs: 6
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) mem::memset
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: push_stack_frame: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/mem.rs:49:1: 60:2: num_bbs: 10
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) mem::memcmp
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: push_stack_frame: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/probestack.rs:49:1: 95:2: num_bbs: 2
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) probestack::__rust_probestack
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: push_stack_frame: /Users/varkor/.cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.16/src/macros.rs:253:9: 255:10: num_bbs: 3
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) float::add::__addsf3
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: load mir Item(DefId(0:410 ~ compiler_builtins[ef6f]::int[0]::{{impl}}[0]::ONE[0]))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <u32 as int::Int>::ONE
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _0 = const 1u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 305:  __ __ __ __ (4 bytes, alignment 4) (stack)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 1u32: Immediate(Scalar(0x00000001))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Ptr(MemPlace { ptr: AllocId(305).0x0, align: Align { pow2: 2 }, meta: None }) <- Scalar(0x00000001): u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 305:  01 00 00 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: return
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 305:  01 00 00 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: LEAVING(0) <u32 as int::Int>::ONE
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::intern: InternVisitor::intern AllocId(305).0x0 with Immutable
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::validity: validate_operand: Indirect(MemPlace { ptr: AllocId(305).0x0, align: Align { pow2: 2 }, meta: None }), u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::validity: visit_value: Indirect(MemPlace { ptr: AllocId(305).0x0, align: Align { pow2: 2 }, meta: None }), TyLayout { ty: u32, details: LayoutDetails { variants: Single { index: 0 }, fields: Union(0), abi: Scalar(Scalar { value: Int(I32, false), valid_range: 0..=4294967295 }), align: AbiAndPrefAlign { abi: Align { pow2: 2 }, pref: Align { pow2: 2 } }, size: Size { raw: 4 } } }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: load mir Item(DefId(0:409 ~ compiler_builtins[ef6f]::int[0]::{{impl}}[0]::ZERO[0]))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <u32 as int::Int>::ZERO
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _0 = const 0u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 306:  __ __ __ __ (4 bytes, alignment 4) (stack)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 0u32: Immediate(Scalar(0x00000000))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Ptr(MemPlace { ptr: AllocId(306).0x0, align: Align { pow2: 2 }, meta: None }) <- Scalar(0x00000000): u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 306:  00 00 00 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: return
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 306:  00 00 00 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: LEAVING(0) <u32 as int::Int>::ZERO
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::intern: InternVisitor::intern AllocId(306).0x0 with Immutable
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::validity: validate_operand: Indirect(MemPlace { ptr: AllocId(306).0x0, align: Align { pow2: 2 }, meta: None }), u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::validity: visit_value: Indirect(MemPlace { ptr: AllocId(306).0x0, align: Align { pow2: 2 }, meta: None }), TyLayout { ty: u32, details: LayoutDetails { variants: Single { index: 0 }, fields: Union(0), abi: Scalar(Scalar { value: Int(I32, false), valid_range: 0..=4294967295 }), align: AbiAndPrefAlign { abi: Align { pow2: 2 }, pref: Align { pow2: 2 } }, size: Size { raw: 4 } } }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::validity: validate_operand: Indirect(MemPlace { ptr: AllocId(297).0x0, align: Align { pow2: 2 }, meta: None }), u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::validity: visit_value: Indirect(MemPlace { ptr: AllocId(297).0x0, align: Align { pow2: 2 }, meta: None }), TyLayout { ty: u32, details: LayoutDetails { variants: Single { index: 0 }, fields: Union(0), abi: Scalar(Scalar { value: Int(I32, false), valid_range: 0..=4294967295 }), align: AbiAndPrefAlign { abi: Align { pow2: 2 }, pref: Align { pow2: 2 } }, size: Size { raw: 4 } } }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::validity: validate_operand: Indirect(MemPlace { ptr: AllocId(298).0x0, align: Align { pow2: 2 }, meta: None }), u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::validity: visit_value: Indirect(MemPlace { ptr: AllocId(298).0x0, align: Align { pow2: 2 }, meta: None }), TyLayout { ty: u32, details: LayoutDetails { variants: Single { index: 0 }, fields: Union(0), abi: Scalar(Scalar { value: Int(I32, false), valid_range: 0..=4294967295 }), align: AbiAndPrefAlign { abi: Align { pow2: 2 }, pref: Align { pow2: 2 } }, size: Size { raw: 4 } } }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: load mir Item(DefId(0:92 ~ compiler_builtins[ef6f]::float[0]::Float[0]::EXPONENT_MAX[0]))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f32 as float::Float>::EXPONENT_MAX
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: StorageLive(_1)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1 is now live
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _2 = CheckedShl(const 1u32, const <Self as float::Float>::EXPONENT_BITS)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _2: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 1u32: Immediate(Scalar(0x00000001))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:91 ~ compiler_builtins[ef6f]::float[0]::Float[0]::EXPONENT_BITS[0]), [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: load mir Item(DefId(0:91 ~ compiler_builtins[ef6f]::float[0]::Float[0]::EXPONENT_BITS[0]))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f32 as float::Float>::EXPONENT_BITS
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: StorageLive(_1)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1 is now live
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _2 = CheckedSub(const <Self as float::Float>::BITS, const <Self as float::Float>::SIGNIFICAND_BITS)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _2: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:89 ~ compiler_builtins[ef6f]::float[0]::Float[0]::BITS[0]), [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const <Self as float::Float>::BITS: Indirect(MemPlace { ptr: AllocId(297).0x0, align: Align { pow2: 2 }, meta: None })
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:90 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGNIFICAND_BITS[0]), [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const <Self as float::Float>::SIGNIFICAND_BITS: Indirect(MemPlace { ptr: AllocId(298).0x0, align: Align { pow2: 2 }, meta: None })
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Sub: Scalar(0x00000020) (u32), Scalar(0x00000017) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _2 } <- ScalarPair(0x00000009, 0x00): (u32, bool)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _2: (0x00000009, 0x00)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: assert(!move (_2.1: bool), "attempt to subtract with overflow") -> bb1
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_2.1: bool): Immediate(Scalar(0x00))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: // bb1
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _1 = move (_2.0: u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00000009))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_2.0: u32): Immediate(Scalar(0x00000009))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _1 } <- Scalar(0x00000009): u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1: 0x00000009
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _3 = CheckedSub(move _1, const 1u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _3: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00000009))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move _1: Immediate(Scalar(0x00000009))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 1u32: Immediate(Scalar(0x00000001))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Sub: Scalar(0x00000009) (u32), Scalar(0x00000001) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _3 } <- ScalarPair(0x00000008, 0x00): (u32, bool)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _3: (0x00000008, 0x00)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: assert(!move (_3.1: bool), "attempt to subtract with overflow") -> bb2
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_3.1: bool): Immediate(Scalar(0x00))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: // bb2
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _0 = move (_3.0: u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 308:  __ __ __ __ (4 bytes, alignment 4) (stack)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00000008))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_3.0: u32): Immediate(Scalar(0x00000008))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Ptr(MemPlace { ptr: AllocId(308).0x0, align: Align { pow2: 2 }, meta: None }) <- Scalar(0x00000008): u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 308:  08 00 00 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: return
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 308:  08 00 00 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: LEAVING(0) <f32 as float::Float>::EXPONENT_BITS
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::intern: InternVisitor::intern AllocId(308).0x0 with Immutable
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const <Self as float::Float>::EXPONENT_BITS: Indirect(MemPlace { ptr: AllocId(308).0x0, align: Align { pow2: 2 }, meta: None })
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Shl: Scalar(0x00000001) (u32), Scalar(0x00000008) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _2 } <- ScalarPair(0x00000100, 0x00): (u32, bool)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _2: (0x00000100, 0x00)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: assert(!move (_2.1: bool), "attempt to shift left with overflow") -> bb1
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_2.1: bool): Immediate(Scalar(0x00))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: // bb1
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _1 = move (_2.0: u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00000100))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_2.0: u32): Immediate(Scalar(0x00000100))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _1 } <- Scalar(0x00000100): u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1: 0x00000100
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _3 = CheckedSub(move _1, const 1u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _3: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00000100))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move _1: Immediate(Scalar(0x00000100))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 1u32: Immediate(Scalar(0x00000001))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Sub: Scalar(0x00000100) (u32), Scalar(0x00000001) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _3 } <- ScalarPair(0x000000ff, 0x00): (u32, bool)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _3: (0x000000ff, 0x00)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: assert(!move (_3.1: bool), "attempt to subtract with overflow") -> bb2
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_3.1: bool): Immediate(Scalar(0x00))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: // bb2
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _0 = move (_3.0: u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 307:  __ __ __ __ (4 bytes, alignment 4) (stack)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x000000ff))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_3.0: u32): Immediate(Scalar(0x000000ff))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Ptr(MemPlace { ptr: AllocId(307).0x0, align: Align { pow2: 2 }, meta: None }) <- Scalar(0x000000ff): u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 307:  ff 00 00 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: return
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 307:  ff 00 00 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: LEAVING(0) <f32 as float::Float>::EXPONENT_MAX
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::intern: InternVisitor::intern AllocId(307).0x0 with Immutable
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::validity: validate_operand: Indirect(MemPlace { ptr: AllocId(307).0x0, align: Align { pow2: 2 }, meta: None }), u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::validity: visit_value: Indirect(MemPlace { ptr: AllocId(307).0x0, align: Align { pow2: 2 }, meta: None }), TyLayout { ty: u32, details: LayoutDetails { variants: Single { index: 0 }, fields: Union(0), abi: Scalar(Scalar { value: Int(I32, false), valid_range: 0..=4294967295 }), align: AbiAndPrefAlign { abi: Align { pow2: 2 }, pref: Align { pow2: 2 } }, size: Size { raw: 4 } } }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: load mir Item(DefId(0:319 ~ compiler_builtins[ef6f]::float[0]::{{impl}}[0]::IMPLICIT_BIT[0]))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f32 as float::Float>::IMPLICIT_BIT
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _1 = CheckedShl(const 1u32, const <f32 as float::Float>::SIGNIFICAND_BITS)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1: is uninitialized
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const 1u32: Immediate(Scalar(0x00000001))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: resolve: DefId(0:90 ~ compiler_builtins[ef6f]::float[0]::Float[0]::SIGNIFICAND_BITS[0]), [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
        def_id: None,
    }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: substs: [
        f32,
    ]
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: const <f32 as float::Float>::SIGNIFICAND_BITS: Indirect(MemPlace { ptr: AllocId(298).0x0, align: Align { pow2: 2 }, meta: None })
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operator: Running binary op Shl: Scalar(0x00000001) (u32), Scalar(0x00000017) (u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Local { frame: 0, local: _1 } <- ScalarPair(0x00800000, 0x00): (u32, bool)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1: (0x00800000, 0x00)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: assert(!move (_1.1: bool), "attempt to shift left with overflow") -> bb1
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_1.1: bool): Immediate(Scalar(0x00))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: // bb1
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _0 = move (_1.0: u32)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 309:  __ __ __ __ (4 bytes, alignment 4) (stack)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: eval_place_to_op: got Immediate(Scalar(0x00800000))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::operand: move (_1.0: u32): Immediate(Scalar(0x00800000))
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::place: write_immediate: Ptr(MemPlace { ptr: AllocId(309).0x0, align: Align { pow2: 2 }, meta: None }) <- Scalar(0x00800000): u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 309:  00 00 80 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: return
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: by align(4) ref:
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::memory: Alloc 309:  00 00 80 00 (4 bytes, alignment 4) (stack)
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: LEAVING(0) <f32 as float::Float>::IMPLICIT_BIT
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::intern: InternVisitor::intern AllocId(309).0x0 with Immutable
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::validity: validate_operand: Indirect(MemPlace { ptr: AllocId(309).0x0, align: Align { pow2: 2 }, meta: None }), u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::validity: visit_value: Indirect(MemPlace { ptr: AllocId(309).0x0, align: Align { pow2: 2 }, meta: None }), TyLayout { ty: u32, details: LayoutDetails { variants: Single { index: 0 }, fields: Union(0), abi: Scalar(Scalar { value: Int(I32, false), valid_range: 0..=4294967295 }), align: AbiAndPrefAlign { abi: Align { pow2: 2 }, pref: Align { pow2: 2 } }, size: Size { raw: 4 } } }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::validity: validate_operand: Indirect(MemPlace { ptr: AllocId(299).0x0, align: Align { pow2: 2 }, meta: None }), u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::validity: visit_value: Indirect(MemPlace { ptr: AllocId(299).0x0, align: Align { pow2: 2 }, meta: None }), TyLayout { ty: u32, details: LayoutDetails { variants: Single { index: 0 }, fields: Union(0), abi: Scalar(Scalar { value: Int(I32, false), valid_range: 0..=4294967295 }), align: AbiAndPrefAlign { abi: Align { pow2: 2 }, pref: Align { pow2: 2 } }, size: Size { raw: 4 } } }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::validity: validate_operand: Indirect(MemPlace { ptr: AllocId(300).0x0, align: Align { pow2: 2 }, meta: None }), u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::validity: visit_value: Indirect(MemPlace { ptr: AllocId(300).0x0, align: Align { pow2: 2 }, meta: None }), TyLayout { ty: u32, details: LayoutDetails { variants: Single { index: 0 }, fields: Union(0), abi: Scalar(Scalar { value: Int(I32, false), valid_range: 0..=4294967295 }), align: AbiAndPrefAlign { abi: Align { pow2: 2 }, pref: Align { pow2: 2 } }, size: Size { raw: 4 } } }
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::visitor: walk_value: type: u32
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: load mir Item(DefId(0:320 ~ compiler_builtins[ef6f]::float[0]::{{impl}}[0]::EXPONENT_MASK[0]))
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: ENTERING(0) <f32 as float::Float>::EXPONENT_MASK
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: StorageLive(_1)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1 is now live
     INFO 2019-06-25T09:37:20Z: rustc_mir::interpret::step: _1 = BitOr(const <f32 as float::Float>::SIGN_MASK, const <f32 as float::Float>::SIGNIFICAND_MASK)
    TRACE 2019-06-25T09:37:20Z: rustc_mir::interpret::eval_context: _1: is uninitialized
    error: internal compiler error: src/librustc/ty/subst.rs:557: type parameter `Self/#0` (Self/0) out of range when substituting (root type=Some(<Self as float::Float>::Int)) substs=[]
    
  16. oli-obk commented on Jun 25, 2019

    @oli-obk
    Contributor

    try dumping the stackframe size, the instance, t and substs in

    let substituted = t.subst(*self.tcx, substs);
    We have [] as substs, but it should be [f32], maybe we're looking at the wrong thing

  17. varkor commented on Jun 30, 2019

    @varkor
    Contributor

    @JohnTitor: you're welcome to take this issue. I'm not sure I'll have time to debug this soon.

  18. JohnTitor commented on Jun 30, 2019

    @JohnTitor
    Member

    @oli-obk How we try dumping the stackframe size?

  19. oli-obk commented on Jul 14, 2019

    @oli-obk
    Contributor

    you can use self.frame.len() I suppose and print that via debug!

  20. added
    requires-nightlyThis issue requires a nightly compiler in some way. When possible, use a F-* label instead.
    on Aug 6, 2019
  21. added a commit that references this issue on Aug 19, 2019
  22. added a commit that references this issue on Aug 20, 2019
    5ae0710
  23. added a commit that references this issue on Aug 20, 2019
    7858dc2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-const-evalArea: Constant evaluation, covers all const contexts (static, const fn, ...)A-const-genericsArea: const generics (parameters and arguments)C-bugCategory: This is a bug.E-easyCall for participation: Easy difficulty. Experience needed to fix: Not much. Good first issue.F-const_generics`#![feature(const_generics)]`I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.requires-nightlyThis issue requires a nightly compiler in some way. When possible, use a F-* label instead.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions