Add LTONotSupported

This commit is contained in:
Ellis Hoag 2022-08-26 20:50:37 -07:00
parent d9aa635969
commit d0b7e71918
3 changed files with 9 additions and 1 deletions

View File

@ -14,6 +14,10 @@ pub(crate) struct LinkageConstOrMutType {
pub span: Span pub span: Span
} }
#[derive(SessionDiagnostic)]
#[diag(codegen_gcc::lto_not_supported)]
pub(crate) struct LTONotSupported {}
#[derive(SessionDiagnostic)] #[derive(SessionDiagnostic)]
#[diag(codegen_gcc::unwinding_inline_asm)] #[diag(codegen_gcc::unwinding_inline_asm)]
pub(crate) struct UnwindingInlineAsm { pub(crate) struct UnwindingInlineAsm {

View File

@ -61,6 +61,7 @@ mod type_of;
use std::any::Any; use std::any::Any;
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
use crate::errors::LTONotSupported;
use gccjit::{Context, OptimizationLevel, CType}; use gccjit::{Context, OptimizationLevel, CType};
use rustc_ast::expand::allocator::AllocatorKind; use rustc_ast::expand::allocator::AllocatorKind;
use rustc_codegen_ssa::{CodegenResults, CompiledModule, ModuleCodegen}; use rustc_codegen_ssa::{CodegenResults, CompiledModule, ModuleCodegen};
@ -99,7 +100,7 @@ pub struct GccCodegenBackend {
impl CodegenBackend for GccCodegenBackend { impl CodegenBackend for GccCodegenBackend {
fn init(&self, sess: &Session) { fn init(&self, sess: &Session) {
if sess.lto() != Lto::No { if sess.lto() != Lto::No {
sess.warn("LTO is not supported. You may get a linker error."); sess.emit_warning(LTONotSupported {});
} }
let temp_dir = TempDir::new().expect("cannot create temporary directory"); let temp_dir = TempDir::new().expect("cannot create temporary directory");

View File

@ -6,3 +6,6 @@ codegen_gcc_linkage_const_or_mut_type =
codegen_gcc_unwinding_inline_asm = codegen_gcc_unwinding_inline_asm =
GCC backend does not support unwinding from inline asm GCC backend does not support unwinding from inline asm
codegen_gcc_lto_not_supported =
LTO is not supported. You may get a linker error.