@@ -4,9 +4,8 @@ use rustc_codegen_ssa::mir::operand::OperandValue;
44use rustc_codegen_ssa:: mir:: place:: PlaceRef ;
55use rustc_codegen_ssa:: traits:: { AsmBuilderMethods , AsmMethods , BaseTypeMethods , BuilderMethods , GlobalAsmOperandRef , InlineAsmOperandRef } ;
66
7- use rustc_hir:: LlvmInlineAsmInner ;
87use rustc_middle:: { bug, ty:: Instance } ;
9- use rustc_span:: { Span , Symbol } ;
8+ use rustc_span:: Span ;
109use rustc_target:: asm:: * ;
1110
1211use std:: borrow:: Cow ;
@@ -106,17 +105,6 @@ enum ConstraintOrRegister {
106105
107106
108107impl < ' a , ' gcc , ' tcx > AsmBuilderMethods < ' tcx > for Builder < ' a , ' gcc , ' tcx > {
109- fn codegen_llvm_inline_asm ( & mut self , _ia : & LlvmInlineAsmInner , _outputs : Vec < PlaceRef < ' tcx , RValue < ' gcc > > > , _inputs : Vec < RValue < ' gcc > > , span : Span ) -> bool {
110- self . sess ( ) . struct_span_err ( span, "GCC backend does not support `llvm_asm!`" )
111- . help ( "consider using the `asm!` macro instead" )
112- . emit ( ) ;
113-
114- // We return `true` even if we've failed to generate the asm
115- // because we want to suppress the "malformed inline assembly" error
116- // generated by the frontend.
117- true
118- }
119-
120108 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 > ) > ) {
121109 if options. contains ( InlineAsmOptions :: MAY_UNWIND ) {
122110 self . sess ( )
@@ -184,7 +172,7 @@ impl<'a, 'gcc, 'tcx> AsmBuilderMethods<'tcx> for Builder<'a, 'gcc, 'tcx> {
184172 let is_target_supported = reg. reg_class ( ) . supported_types ( asm_arch) . iter ( )
185173 . any ( |& ( _, feature) | {
186174 if let Some ( feature) = feature {
187- self . tcx . sess . target_features . contains ( & Symbol :: intern ( feature) )
175+ self . tcx . sess . target_features . contains ( & feature)
188176 } else {
189177 true // Register class is unconditionally supported
190178 }
@@ -572,6 +560,7 @@ fn reg_to_gcc(reg: InlineAsmRegOrRegClass) -> ConstraintOrRegister {
572560 InlineAsmRegClass :: Hexagon ( HexagonInlineAsmRegClass :: reg) => unimplemented ! ( ) ,
573561 InlineAsmRegClass :: Mips ( MipsInlineAsmRegClass :: reg) => unimplemented ! ( ) ,
574562 InlineAsmRegClass :: Mips ( MipsInlineAsmRegClass :: freg) => unimplemented ! ( ) ,
563+ InlineAsmRegClass :: Msp430 ( _) => unimplemented ! ( ) ,
575564 InlineAsmRegClass :: Nvptx ( NvptxInlineAsmRegClass :: reg16) => unimplemented ! ( ) ,
576565 InlineAsmRegClass :: Nvptx ( NvptxInlineAsmRegClass :: reg32) => unimplemented ! ( ) ,
577566 InlineAsmRegClass :: Nvptx ( NvptxInlineAsmRegClass :: reg64) => unimplemented ! ( ) ,
@@ -634,6 +623,7 @@ fn dummy_output_type<'gcc, 'tcx>(cx: &CodegenCx<'gcc, 'tcx>, reg: InlineAsmRegCl
634623 InlineAsmRegClass :: Hexagon ( HexagonInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
635624 InlineAsmRegClass :: Mips ( MipsInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
636625 InlineAsmRegClass :: Mips ( MipsInlineAsmRegClass :: freg) => cx. type_f32 ( ) ,
626+ InlineAsmRegClass :: Msp430 ( _) => unimplemented ! ( ) ,
637627 InlineAsmRegClass :: Nvptx ( NvptxInlineAsmRegClass :: reg16) => cx. type_i16 ( ) ,
638628 InlineAsmRegClass :: Nvptx ( NvptxInlineAsmRegClass :: reg32) => cx. type_i32 ( ) ,
639629 InlineAsmRegClass :: Nvptx ( NvptxInlineAsmRegClass :: reg64) => cx. type_i64 ( ) ,
@@ -741,6 +731,7 @@ fn modifier_to_gcc(arch: InlineAsmArch, reg: InlineAsmRegClass, modifier: Option
741731 InlineAsmRegClass :: Bpf ( _) => unimplemented ! ( ) ,
742732 InlineAsmRegClass :: Hexagon ( _) => unimplemented ! ( ) ,
743733 InlineAsmRegClass :: Mips ( _) => unimplemented ! ( ) ,
734+ InlineAsmRegClass :: Msp430 ( _) => unimplemented ! ( ) ,
744735 InlineAsmRegClass :: Nvptx ( _) => unimplemented ! ( ) ,
745736 InlineAsmRegClass :: PowerPC ( _) => unimplemented ! ( ) ,
746737 InlineAsmRegClass :: RiscV ( RiscVInlineAsmRegClass :: reg)
0 commit comments