1 //===-- ARMAsmBackendDarwin.h ARM Asm Backend Darwin ----------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef LLVM_LIB_TARGET_ARM_ARMASMBACKENDDARWIN_H 11 #define LLVM_LIB_TARGET_ARM_ARMASMBACKENDDARWIN_H 12 13 #include "ARMAsmBackend.h" 14 #include "llvm/BinaryFormat/MachO.h" 15 #include "llvm/MC/MCObjectWriter.h" 16 17 namespace llvm { 18 class ARMAsmBackendDarwin : public ARMAsmBackend { 19 const MCRegisterInfo &MRI; 20 public: 21 const MachO::CPUSubTypeARM Subtype; ARMAsmBackendDarwin(const Target & T,const MCSubtargetInfo & STI,const MCRegisterInfo & MRI,MachO::CPUSubTypeARM st)22 ARMAsmBackendDarwin(const Target &T, const MCSubtargetInfo &STI, 23 const MCRegisterInfo &MRI, MachO::CPUSubTypeARM st) 24 : ARMAsmBackend(T, STI, support::little), MRI(MRI), Subtype(st) {} 25 26 std::unique_ptr<MCObjectTargetWriter> createObjectTargetWriter()27 createObjectTargetWriter() const override { 28 return createARMMachObjectWriter(/*Is64Bit=*/false, MachO::CPU_TYPE_ARM, 29 Subtype); 30 } 31 32 uint32_t generateCompactUnwindEncoding( 33 ArrayRef<MCCFIInstruction> Instrs) const override; 34 }; 35 } // end namespace llvm 36 37 #endif 38