diff options
| author | Ellis Hoag <ellis.sparky.hoag@gmail.com> | 2022-08-26 20:23:50 -0700 |
|---|---|---|
| committer | Antoni Boucher <bouanto@zoho.com> | 2023-02-28 19:07:24 -0500 |
| commit | 5a9ec83a177e01fc45bd2439148dd3d470424480 (patch) | |
| tree | 0e7cee27750389d31daf4379cadb59b61a253d54 | |
| parent | c503d978dc78281dd0f93f1bbb55d378a6a97736 (diff) | |
| download | rust-5a9ec83a177e01fc45bd2439148dd3d470424480.tar.gz rust-5a9ec83a177e01fc45bd2439148dd3d470424480.zip | |
Add LinkageConstOrMutType
| -rw-r--r-- | src/consts.rs | 6 | ||||
| -rw-r--r-- | src/errors.rs | 8 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/consts.rs b/src/consts.rs index b91fbfd6d94..be50850d82f 100644 --- a/src/consts.rs +++ b/src/consts.rs @@ -14,6 +14,7 @@ use rustc_target::abi::{self, Align, HasDataLayout, Primitive, Size, WrappingRan use crate::base; use crate::context::CodegenCx; +use crate::errors::LinkageConstOrMutType; use crate::type_of::LayoutGccExt; impl<'gcc, 'tcx> CodegenCx<'gcc, 'tcx> { @@ -350,10 +351,7 @@ fn check_and_apply_linkage<'gcc, 'tcx>(cx: &CodegenCx<'gcc, 'tcx>, attrs: &Codeg cx.layout_of(mt.ty).gcc_type(cx) } else { - cx.sess().span_fatal( - span, - "must have type `*const T` or `*mut T` due to `#[linkage]` attribute", - ) + cx.sess().emit_fatal(LinkageConstOrMutType { span: span }) }; // Declare a symbol `foo` with the desired linkage. let global1 = cx.declare_global_with_linkage(&sym, llty2, base::global_linkage_to_gcc(linkage)); diff --git a/src/errors.rs b/src/errors.rs index 1a0e38fc0bb..456a60c6f90 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -1,7 +1,15 @@ use rustc_macros::SessionDiagnostic; +use rustc_span::Span; #[derive(SessionDiagnostic)] #[diag(codegen_gcc::ranlib_failure)] pub(crate) struct RanlibFailure { pub exit_code: Option<i32> } + +#[derive(SessionDiagnostic)] +#[diag(codegen_gcc::linkage_const_or_mut_type)] +pub(crate) struct LinkageConstOrMutType { + #[primary_span] + pub span: Span +} |
