about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src
diff options
context:
space:
mode:
authorSLASHLogin <loginmlgxd@gmail.com>2022-08-26 10:14:15 +0200
committerSLASHLogin <loginmlgxd@gmail.com>2022-11-09 14:56:20 +0100
commit39d363fd58d7686265b14af41dc3029a30737282 (patch)
tree353fcdee31292a0ca30e288882b1ec1d735bebc7 /compiler/rustc_codegen_llvm/src
parentf031823ecdef195c8e8295adb6d57433f83ca136 (diff)
downloadrust-39d363fd58d7686265b14af41dc3029a30737282.tar.gz
rust-39d363fd58d7686265b14af41dc3029a30737282.zip
Port layout size overflow
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
-rw-r--r--compiler/rustc_codegen_llvm/src/context.rs5
-rw-r--r--compiler/rustc_codegen_llvm/src/errors.rs8
2 files changed, 11 insertions, 2 deletions
diff --git a/compiler/rustc_codegen_llvm/src/context.rs b/compiler/rustc_codegen_llvm/src/context.rs
index 3ac0778e3bd..7ed4df16ea9 100644
--- a/compiler/rustc_codegen_llvm/src/context.rs
+++ b/compiler/rustc_codegen_llvm/src/context.rs
@@ -4,6 +4,7 @@ use crate::callee::get_fn;
 use crate::coverageinfo;
 use crate::debuginfo;
 use crate::errors::BranchProtectionRequiresAArch64;
+use crate::errors::LayoutSizeOverflow;
 use crate::llvm;
 use crate::llvm_util;
 use crate::type_::Type;
@@ -952,7 +953,7 @@ impl<'tcx> LayoutOfHelpers<'tcx> for CodegenCx<'_, 'tcx> {
     #[inline]
     fn handle_layout_err(&self, err: LayoutError<'tcx>, span: Span, ty: Ty<'tcx>) -> ! {
         if let LayoutError::SizeOverflow(_) = err {
-            self.sess().span_fatal(span, &err.to_string())
+            self.sess().emit_fatal(LayoutSizeOverflow { span, error: err.to_string() })
         } else {
             span_bug!(span, "failed to get layout for `{}`: {}", ty, err)
         }
@@ -970,7 +971,7 @@ impl<'tcx> FnAbiOfHelpers<'tcx> for CodegenCx<'_, 'tcx> {
         fn_abi_request: FnAbiRequest<'tcx>,
     ) -> ! {
         if let FnAbiError::Layout(LayoutError::SizeOverflow(_)) = err {
-            self.sess().span_fatal(span, &err.to_string())
+            self.sess().emit_fatal(LayoutSizeOverflow { span, error: err.to_string() })
         } else {
             match fn_abi_request {
                 FnAbiRequest::OfFnPtr { sig, extra_args } => {
diff --git a/compiler/rustc_codegen_llvm/src/errors.rs b/compiler/rustc_codegen_llvm/src/errors.rs
index e740e02dd1c..95a12d98d5c 100644
--- a/compiler/rustc_codegen_llvm/src/errors.rs
+++ b/compiler/rustc_codegen_llvm/src/errors.rs
@@ -59,3 +59,11 @@ pub(crate) struct SymbolAlreadyDefined<'a> {
 #[derive(SessionDiagnostic)]
 #[diag(codegen_llvm::branch_protection_requires_aarch64)]
 pub(crate) struct BranchProtectionRequiresAArch64;
+
+#[derive(SessionDiagnostic)]
+#[diag(codegen_llvm::layout_size_overflow)]
+pub(crate) struct LayoutSizeOverflow {
+    #[primary_span]
+    pub span: Span,
+    pub error: String,
+}