Skip to content

Commit db18b42

Browse files
committed
Evaluate unevaluated MIR constants in codegen_mir
1 parent f8976e3 commit db18b42

File tree

1 file changed

+14
-0
lines changed
  • src/librustc_codegen_ssa/mir

1 file changed

+14
-0
lines changed

src/librustc_codegen_ssa/mir/mod.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
use crate::base;
22
use crate::traits::*;
3+
use rustc_errors::ErrorReported;
34
use rustc_middle::mir;
5+
use rustc_middle::mir::interpret::ErrorHandled;
46
use rustc_middle::ty::layout::{FnAbiExt, HasTyCtxt, TyAndLayout};
57
use rustc_middle::ty::{self, Instance, Ty, TypeFoldable};
68
use rustc_target::abi::call::{FnAbi, PassMode};
@@ -189,6 +191,18 @@ pub fn codegen_mir<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>(
189191

190192
fx.per_local_var_debug_info = fx.compute_per_local_var_debug_info();
191193

194+
for const_ in &mir.uneval_consts {
195+
if let Err(err) = fx.eval_mir_constant(const_) {
196+
match err {
197+
// errored or at least linted
198+
ErrorHandled::Reported(ErrorReported) | ErrorHandled::Linted => {}
199+
ErrorHandled::TooGeneric => {
200+
span_bug!(const_.span, "codgen encountered polymorphic constant: {:?}", err)
201+
}
202+
}
203+
}
204+
}
205+
192206
let memory_locals = analyze::non_ssa_locals(&fx);
193207

194208
// Allocate variable and temp allocas

0 commit comments

Comments
 (0)