mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 16:24:46 +00:00
Add UnwindingInlineAsm
This commit is contained in:
parent
7e00a48305
commit
d9aa635969
@ -12,6 +12,7 @@ use std::borrow::Cow;
|
|||||||
|
|
||||||
use crate::builder::Builder;
|
use crate::builder::Builder;
|
||||||
use crate::context::CodegenCx;
|
use crate::context::CodegenCx;
|
||||||
|
use crate::errors::UnwindingInlineAsm;
|
||||||
use crate::type_of::LayoutGccExt;
|
use crate::type_of::LayoutGccExt;
|
||||||
use crate::callee::get_fn;
|
use crate::callee::get_fn;
|
||||||
|
|
||||||
@ -109,7 +110,7 @@ impl<'a, 'gcc, 'tcx> AsmBuilderMethods<'tcx> for Builder<'a, 'gcc, 'tcx> {
|
|||||||
fn codegen_inline_asm(&mut self, template: &[InlineAsmTemplatePiece], rust_operands: &[InlineAsmOperandRef<'tcx, Self>], options: InlineAsmOptions, span: &[Span], _instance: Instance<'_>, _dest_catch_funclet: Option<(Self::BasicBlock, Self::BasicBlock, Option<&Self::Funclet>)>) {
|
fn codegen_inline_asm(&mut self, template: &[InlineAsmTemplatePiece], rust_operands: &[InlineAsmOperandRef<'tcx, Self>], options: InlineAsmOptions, span: &[Span], _instance: Instance<'_>, _dest_catch_funclet: Option<(Self::BasicBlock, Self::BasicBlock, Option<&Self::Funclet>)>) {
|
||||||
if options.contains(InlineAsmOptions::MAY_UNWIND) {
|
if options.contains(InlineAsmOptions::MAY_UNWIND) {
|
||||||
self.sess()
|
self.sess()
|
||||||
.struct_span_err(span[0], "GCC backend does not support unwinding from inline asm")
|
.create_err(UnwindingInlineAsm { span: span[0] })
|
||||||
.emit();
|
.emit();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -13,3 +13,10 @@ pub(crate) struct LinkageConstOrMutType {
|
|||||||
#[primary_span]
|
#[primary_span]
|
||||||
pub span: Span
|
pub span: Span
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(SessionDiagnostic)]
|
||||||
|
#[diag(codegen_gcc::unwinding_inline_asm)]
|
||||||
|
pub(crate) struct UnwindingInlineAsm {
|
||||||
|
#[primary_span]
|
||||||
|
pub span: Span
|
||||||
|
}
|
||||||
|
@ -3,3 +3,6 @@ codegen_gcc_ranlib_failure =
|
|||||||
|
|
||||||
codegen_gcc_linkage_const_or_mut_type =
|
codegen_gcc_linkage_const_or_mut_type =
|
||||||
must have type `*const T` or `*mut T` due to `#[linkage]` attribute
|
must have type `*const T` or `*mut T` due to `#[linkage]` attribute
|
||||||
|
|
||||||
|
codegen_gcc_unwinding_inline_asm =
|
||||||
|
GCC backend does not support unwinding from inline asm
|
||||||
|
Loading…
Reference in New Issue
Block a user