about summary refs log tree commit diff
path: root/compiler/rustc_codegen_ssa
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2022-11-19 13:41:21 +0100
committerRalf Jung <post@ralfj.de>2022-11-19 14:08:12 +0100
commit3338244f698022611bbc77947f9eb8b5d24d56e5 (patch)
treeb33afe377d3dfdeb805e42b570f07bdfe214d831 /compiler/rustc_codegen_ssa
parentbecc24a23aed2639db3b78acd93ec6d553898583 (diff)
downloadrust-3338244f698022611bbc77947f9eb8b5d24d56e5.tar.gz
rust-3338244f698022611bbc77947f9eb8b5d24d56e5.zip
deduplicate constant evaluation in cranelift backend
also sync LLVM and cranelift structure a bit
Diffstat (limited to 'compiler/rustc_codegen_ssa')
-rw-r--r--compiler/rustc_codegen_ssa/src/mir/constant.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/compiler/rustc_codegen_ssa/src/mir/constant.rs b/compiler/rustc_codegen_ssa/src/mir/constant.rs
index 4c6ab457c49..53ff3c24096 100644
--- a/compiler/rustc_codegen_ssa/src/mir/constant.rs
+++ b/compiler/rustc_codegen_ssa/src/mir/constant.rs
@@ -42,7 +42,14 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
         };
 
         self.cx.tcx().const_eval_resolve(ty::ParamEnv::reveal_all(), uv, None).map_err(|err| {
-            self.cx.tcx().sess.span_err(constant.span, "erroneous constant encountered");
+            match err {
+                ErrorHandled::Reported(_) => {
+                    self.cx.tcx().sess.span_err(constant.span, "erroneous constant encountered");
+                }
+                ErrorHandled::TooGeneric => {
+                    span_bug!(constant.span, "codegen encountered polymorphic constant: {:?}", err);
+                }
+            }
             err
         })
     }