Support non-scalar constants.
This commit is contained in:
parent
68c2f5ba0f
commit
6ad6b4381c
12 changed files with 259 additions and 22 deletions
|
@ -445,9 +445,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
|
|||
|
||||
#[inline(always)]
|
||||
pub fn cur_span(&self) -> Span {
|
||||
// This deliberately does *not* honor `requires_caller_location` since it is used for much
|
||||
// more than just panics.
|
||||
self.stack().last().map_or(self.tcx.span, |f| f.current_span())
|
||||
M::cur_span(self)
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
|
|
|
@ -11,6 +11,7 @@ use rustc_middle::mir;
|
|||
use rustc_middle::ty::layout::TyAndLayout;
|
||||
use rustc_middle::ty::{self, Ty, TyCtxt};
|
||||
use rustc_span::def_id::DefId;
|
||||
use rustc_span::Span;
|
||||
use rustc_target::abi::{Align, Size};
|
||||
use rustc_target::spec::abi::Abi as CallAbi;
|
||||
|
||||
|
@ -440,6 +441,15 @@ pub trait Machine<'mir, 'tcx: 'mir>: Sized {
|
|||
frame: Frame<'mir, 'tcx, Self::Provenance>,
|
||||
) -> InterpResult<'tcx, Frame<'mir, 'tcx, Self::Provenance, Self::FrameExtra>>;
|
||||
|
||||
fn cur_span(ecx: &InterpCx<'mir, 'tcx, Self>) -> Span
|
||||
where
|
||||
'tcx: 'mir,
|
||||
{
|
||||
// This deliberately does *not* honor `requires_caller_location` since it is used for much
|
||||
// more than just panics.
|
||||
Self::stack(ecx).last().map_or(ecx.tcx.span, |f| f.current_span())
|
||||
}
|
||||
|
||||
/// Borrow the current thread's stack.
|
||||
fn stack<'a>(
|
||||
ecx: &'a InterpCx<'mir, 'tcx, Self>,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue