- Ok(val) => ty::Const::from_const_value(ecx.tcx.tcx, val, ty),
- Err(err) => {
- let (frames, span) = ecx.generate_stacktrace(None);
- let err = ConstEvalErr {
- span,
- error: err,
- stacktrace: frames,
- };
- err.report_as_error(
- ecx.tcx,
- "failed to convert Value to ConstValue, this is a bug",
- );
- span_bug!(span, "miri error occured when converting Value to ConstValue")
+ Ok(val) => ty::Const::from_const_value(ecx.tcx.tcx, val, layout.ty),
+ Err(error) => {
+ let (stacktrace, span) = ecx.generate_stacktrace(None);
+ let err = ConstEvalErr { span, error, stacktrace };
+ if let Some(mut err) = err.struct_error(ecx.tcx, "failed to convert Value to ConstValue") {
+ err.delay_as_bug();
+ } else {
+ span_bug!(span, "failed to convert Value to ConstValue")
+ }
+ let alloc = Allocation::undef(layout.size, layout.align);
+ let alloc = ecx.tcx.intern_const_alloc(alloc);
+ let val = ConstValue::ByRef(alloc, Size::ZERO);
+ ty::Const::from_const_value(ecx.tcx.tcx, val, layout.ty)