diff options
| author | Santiago Pastorino <spastorino@gmail.com> | 2020-04-05 10:30:32 -0300 |
|---|---|---|
| committer | Santiago Pastorino <spastorino@gmail.com> | 2020-04-23 16:50:17 -0300 |
| commit | db18b42343a080024279a0e44b785594dcaf8667 (patch) | |
| tree | 8c55be0e9612b706e334a2169654921ba9bd1952 | |
| parent | f8976e377f694c98c180ce967b295531d1824563 (diff) | |
| download | rust-db18b42343a080024279a0e44b785594dcaf8667.tar.gz rust-db18b42343a080024279a0e44b785594dcaf8667.zip | |
Evaluate unevaluated MIR constants in codegen_mir
| -rw-r--r-- | src/librustc_codegen_ssa/mir/mod.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/librustc_codegen_ssa/mir/mod.rs b/src/librustc_codegen_ssa/mir/mod.rs index cb6d2d297cd..663b37d5e65 100644 --- a/src/librustc_codegen_ssa/mir/mod.rs +++ b/src/librustc_codegen_ssa/mir/mod.rs @@ -1,6 +1,8 @@ use crate::base; use crate::traits::*; +use rustc_errors::ErrorReported; use rustc_middle::mir; +use rustc_middle::mir::interpret::ErrorHandled; use rustc_middle::ty::layout::{FnAbiExt, HasTyCtxt, TyAndLayout}; use rustc_middle::ty::{self, Instance, Ty, TypeFoldable}; use rustc_target::abi::call::{FnAbi, PassMode}; @@ -189,6 +191,18 @@ pub fn codegen_mir<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>( fx.per_local_var_debug_info = fx.compute_per_local_var_debug_info(); + for const_ in &mir.uneval_consts { + if let Err(err) = fx.eval_mir_constant(const_) { + match err { + // errored or at least linted + ErrorHandled::Reported(ErrorReported) | ErrorHandled::Linted => {} + ErrorHandled::TooGeneric => { + span_bug!(const_.span, "codgen encountered polymorphic constant: {:?}", err) + } + } + } + } + let memory_locals = analyze::non_ssa_locals(&fx); // Allocate variable and temp allocas |
