add comments explaining where post-mono const eval errors abort compilation
This commit is contained in:
parent
39db6a0972
commit
d765fb8faf
5 changed files with 15 additions and 8 deletions
|
@ -21,11 +21,11 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
|
|||
}
|
||||
|
||||
pub fn eval_mir_constant(&self, constant: &mir::ConstOperand<'tcx>) -> mir::ConstValue<'tcx> {
|
||||
// `MirUsedCollector` visited all constants before codegen began, so if we got here there
|
||||
// can be no more constants that fail to evaluate.
|
||||
// `MirUsedCollector` visited all required_consts before codegen began, so if we got here
|
||||
// there can be no more constants that fail to evaluate.
|
||||
self.monomorphize(constant.const_)
|
||||
.eval(self.cx.tcx(), ty::ParamEnv::reveal_all(), Some(constant.span))
|
||||
.expect("erroneous constant not captured by required_consts")
|
||||
.expect("erroneous constant missed by mono item collection")
|
||||
}
|
||||
|
||||
/// This is a convenience helper for `simd_shuffle_indices`. It has the precondition
|
||||
|
|
|
@ -211,7 +211,8 @@ pub fn codegen_mir<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>(
|
|||
|
||||
// It may seem like we should iterate over `required_consts` to ensure they all successfully
|
||||
// evaluate; however, the `MirUsedCollector` already did that during the collection phase of
|
||||
// monomorphization so we don't have to do it again.
|
||||
// monomorphization, and if there is an error during collection then codegen never starts -- so
|
||||
// we don't have to do it again.
|
||||
|
||||
fx.per_local_var_debug_info = fx.compute_per_local_var_debug_info(&mut start_bx);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue