LLVM API Documentation
#include <ARMUnwindOpAsm.h>
Public Member Functions | |
UnwindOpcodeAssembler () | |
void | Reset () |
Reset the unwind opcode assembler. | |
void | setPersonality (const MCSymbol *Per) |
Set the personality. | |
void | EmitRegSave (uint32_t RegSave) |
Emit unwind opcodes for .save directives. | |
void | EmitVFPRegSave (uint32_t VFPRegSave) |
Emit unwind opcodes for .vsave directives. | |
void | EmitSetSP (uint16_t Reg) |
Emit unwind opcodes to copy address from source register to $sp. | |
void | EmitSPOffset (int64_t Offset) |
Emit unwind opcodes to add $sp with an offset. | |
void | EmitRaw (const SmallVectorImpl< uint8_t > &Opcodes) |
Emit unwind raw opcodes. | |
void | Finalize (unsigned &PersonalityIndex, SmallVectorImpl< uint8_t > &Result) |
Finalize the unwind opcode sequence for EmitBytes() |
Definition at line 26 of file ARMUnwindOpAsm.h.
llvm::UnwindOpcodeAssembler::UnwindOpcodeAssembler | ( | ) | [inline] |
Definition at line 33 of file ARMUnwindOpAsm.h.
References llvm::SmallVectorTemplateBase< T, isPodLike >::push_back().
void llvm::UnwindOpcodeAssembler::EmitRaw | ( | const SmallVectorImpl< uint8_t > & | Opcodes | ) | [inline] |
Emit unwind raw opcodes.
Definition at line 64 of file ARMUnwindOpAsm.h.
References llvm::SmallVectorTemplateCommon< T, typename >::back(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::SmallVectorTemplateCommon< T, typename >::end(), llvm::SmallVectorImpl< T >::insert(), llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
void UnwindOpcodeAssembler::EmitRegSave | ( | uint32_t | RegSave | ) |
Emit unwind opcodes for .save directives.
Definition at line 65 of file ARMUnwindOpAsm.cpp.
References llvm::tgtok::Bit, llvm::ARM::EHABI::UNWIND_OPCODE_POP_REG_MASK, llvm::ARM::EHABI::UNWIND_OPCODE_POP_REG_MASK_R4, llvm::ARM::EHABI::UNWIND_OPCODE_POP_REG_RANGE_R4, and llvm::ARM::EHABI::UNWIND_OPCODE_POP_REG_RANGE_R4_R14.
void UnwindOpcodeAssembler::EmitSetSP | ( | uint16_t | Reg | ) |
Emit unwind opcodes to copy address from source register to $sp.
Definition at line 156 of file ARMUnwindOpAsm.cpp.
References llvm::ARM::EHABI::UNWIND_OPCODE_SET_VSP.
void UnwindOpcodeAssembler::EmitSPOffset | ( | int64_t | Offset | ) |
Emit unwind opcodes to add $sp with an offset.
Definition at line 161 of file ARMUnwindOpAsm.cpp.
References llvm::encodeULEB128(), llvm::ARM::EHABI::UNWIND_OPCODE_DEC_VSP, llvm::ARM::EHABI::UNWIND_OPCODE_INC_VSP, and llvm::ARM::EHABI::UNWIND_OPCODE_INC_VSP_ULEB128.
void UnwindOpcodeAssembler::EmitVFPRegSave | ( | uint32_t | VFPRegSave | ) |
Emit unwind opcodes for .vsave directives.
Definition at line 107 of file ARMUnwindOpAsm.cpp.
References llvm::tgtok::Bit, llvm::ARM::EHABI::UNWIND_OPCODE_POP_VFP_REG_RANGE_FSTMFDD, and llvm::ARM::EHABI::UNWIND_OPCODE_POP_VFP_REG_RANGE_FSTMFDD_D16.
void UnwindOpcodeAssembler::Finalize | ( | unsigned & | PersonalityIndex, |
SmallVectorImpl< uint8_t > & | Result | ||
) |
Finalize the unwind opcode sequence for EmitBytes()
Definition at line 184 of file ARMUnwindOpAsm.cpp.
References llvm::ARM::EHABI::AEABI_UNWIND_CPP_PR0, llvm::ARM::EHABI::AEABI_UNWIND_CPP_PR1, llvm::sys::path::end(), llvm::ARM::EHABI::NUM_PERSONALITY_INDEX, Reset(), llvm::SmallVectorImpl< T >::resize(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
void llvm::UnwindOpcodeAssembler::Reset | ( | ) | [inline] |
Reset the unwind opcode assembler.
Definition at line 39 of file ARMUnwindOpAsm.h.
References llvm::SmallVectorImpl< T >::clear(), and llvm::SmallVectorTemplateBase< T, isPodLike >::push_back().
Referenced by Finalize().
void llvm::UnwindOpcodeAssembler::setPersonality | ( | const MCSymbol * | Per | ) | [inline] |
Set the personality.
Definition at line 47 of file ARMUnwindOpAsm.h.