|
LLVM
4.0.0
|
#include <ARMUnwindOpAsm.h>
Public Member Functions | |
| UnwindOpcodeAssembler () | |
| void | Reset () |
| Reset the unwind opcode assembler. More... | |
| void | setPersonality (const MCSymbol *Per) |
| Set the personality. More... | |
| void | EmitRegSave (uint32_t RegSave) |
| Emit unwind opcodes for .save directives. More... | |
| void | EmitVFPRegSave (uint32_t VFPRegSave) |
| Emit unwind opcodes for .vsave directives. More... | |
| void | EmitSetSP (uint16_t Reg) |
| Emit unwind opcodes to copy address from source register to $sp. More... | |
| void | EmitSPOffset (int64_t Offset) |
| Emit unwind opcodes to add $sp with an offset. More... | |
| void | EmitRaw (const SmallVectorImpl< uint8_t > &Opcodes) |
| Emit unwind raw opcodes. More... | |
| void | Finalize (unsigned &PersonalityIndex, SmallVectorImpl< uint8_t > &Result) |
| Finalize the unwind opcode sequence for EmitBytes() More... | |
Definition at line 26 of file ARMUnwindOpAsm.h.
|
inline |
Definition at line 33 of file ARMUnwindOpAsm.h.
References llvm::SmallVectorTemplateBase< T, isPodLike >::push_back().
|
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::countTrailingOnes(), llvm::BitmaskEnumDetail::Mask(), 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 126 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 131 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 103 of file ARMUnwindOpAsm.cpp.
References llvm::countLeadingOnes(), llvm::countLeadingZeros(), Regs, 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 154 of file ARMUnwindOpAsm.cpp.
References llvm::ARM::EHABI::AEABI_UNWIND_CPP_PR0, llvm::ARM::EHABI::AEABI_UNWIND_CPP_PR1, assert(), llvm::sys::path::end(), i, llvm::ARM::EHABI::NUM_PERSONALITY_INDEX, Reset(), llvm::SmallVectorImpl< T >::resize(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
|
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().
Set the personality.
Definition at line 47 of file ARMUnwindOpAsm.h.
1.8.6