LLVM  3.7.0
Public Types | Public Member Functions | Static Public Member Functions | List of all members
llvm::MCCFIInstruction Class Reference

#include <MCDwarf.h>

Collaboration diagram for llvm::MCCFIInstruction:
[legend]

Public Types

enum  OpType {
  OpSameValue, OpRememberState, OpRestoreState, OpOffset,
  OpDefCfaRegister, OpDefCfaOffset, OpDefCfa, OpRelOffset,
  OpAdjustCfaOffset, OpEscape, OpRestore, OpUndefined,
  OpRegister, OpWindowSave
}
 

Public Member Functions

OpType getOperation () const
 
MCSymbolgetLabel () const
 
unsigned getRegister () const
 
unsigned getRegister2 () const
 
int getOffset () const
 
StringRef getValues () const
 

Static Public Member Functions

static MCCFIInstruction createDefCfa (MCSymbol *L, unsigned Register, int Offset)
 .cfi_def_cfa defines a rule for computing CFA as: take address from Register and add Offset to it. More...
 
static MCCFIInstruction createDefCfaRegister (MCSymbol *L, unsigned Register)
 .cfi_def_cfa_register modifies a rule for computing CFA. More...
 
static MCCFIInstruction createDefCfaOffset (MCSymbol *L, int Offset)
 .cfi_def_cfa_offset modifies a rule for computing CFA. More...
 
static MCCFIInstruction createAdjustCfaOffset (MCSymbol *L, int Adjustment)
 .cfi_adjust_cfa_offset Same as .cfi_def_cfa_offset, but Offset is a relative value that is added/subtracted from the previous offset. More...
 
static MCCFIInstruction createOffset (MCSymbol *L, unsigned Register, int Offset)
 .cfi_offset Previous value of Register is saved at offset Offset from CFA. More...
 
static MCCFIInstruction createRelOffset (MCSymbol *L, unsigned Register, int Offset)
 .cfi_rel_offset Previous value of Register is saved at offset Offset from the current CFA register. More...
 
static MCCFIInstruction createRegister (MCSymbol *L, unsigned Register1, unsigned Register2)
 .cfi_register Previous value of Register1 is saved in register Register2. More...
 
static MCCFIInstruction createWindowSave (MCSymbol *L)
 .cfi_window_save SPARC register window is saved. More...
 
static MCCFIInstruction createRestore (MCSymbol *L, unsigned Register)
 .cfi_restore says that the rule for Register is now the same as it was at the beginning of the function, after all initial instructions added by .cfi_startproc were executed. More...
 
static MCCFIInstruction createUndefined (MCSymbol *L, unsigned Register)
 .cfi_undefined From now on the previous value of Register can't be restored anymore. More...
 
static MCCFIInstruction createSameValue (MCSymbol *L, unsigned Register)
 .cfi_same_value Current value of Register is the same as in the previous frame. More...
 
static MCCFIInstruction createRememberState (MCSymbol *L)
 .cfi_remember_state Save all current rules for all registers. More...
 
static MCCFIInstruction createRestoreState (MCSymbol *L)
 .cfi_restore_state Restore the previously saved state. More...
 
static MCCFIInstruction createEscape (MCSymbol *L, StringRef Vals)
 .cfi_escape Allows the user to add arbitrary bytes to the unwind info. More...
 

Detailed Description

Definition at line 311 of file MCDwarf.h.

Member Enumeration Documentation

Enumerator
OpSameValue 
OpRememberState 
OpRestoreState 
OpOffset 
OpDefCfaRegister 
OpDefCfaOffset 
OpDefCfa 
OpRelOffset 
OpAdjustCfaOffset 
OpEscape 
OpRestore 
OpUndefined 
OpRegister 
OpWindowSave 

Definition at line 313 of file MCDwarf.h.

Member Function Documentation

static MCCFIInstruction llvm::MCCFIInstruction::createAdjustCfaOffset ( MCSymbol L,
int  Adjustment 
)
inlinestatic

.cfi_adjust_cfa_offset Same as .cfi_def_cfa_offset, but Offset is a relative value that is added/subtracted from the previous offset.

Definition at line 375 of file MCDwarf.h.

References OpAdjustCfaOffset.

Referenced by llvm::MCStreamer::EmitCFIAdjustCfaOffset().

static MCCFIInstruction llvm::MCCFIInstruction::createDefCfa ( MCSymbol L,
unsigned  Register,
int  Offset 
)
inlinestatic
static MCCFIInstruction llvm::MCCFIInstruction::createDefCfaOffset ( MCSymbol L,
int  Offset 
)
inlinestatic

.cfi_def_cfa_offset modifies a rule for computing CFA.

Register remains the same, but offset is new. Note that it is the absolute offset that will be added to a defined register to the compute CFA address.

Definition at line 368 of file MCDwarf.h.

References OpDefCfaOffset.

Referenced by llvm::ARMFrameLowering::adjustForSegmentedStacks(), llvm::MCStreamer::EmitCFIDefCfaOffset(), EmitDefCfaOffset(), llvm::Mips16FrameLowering::emitPrologue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::AArch64FrameLowering::emitPrologue(), llvm::PPCFrameLowering::emitPrologue(), llvm::SystemZFrameLowering::emitPrologue(), and llvm::X86FrameLowering::emitPrologue().

static MCCFIInstruction llvm::MCCFIInstruction::createDefCfaRegister ( MCSymbol L,
unsigned  Register 
)
inlinestatic
static MCCFIInstruction llvm::MCCFIInstruction::createEscape ( MCSymbol L,
StringRef  Vals 
)
inlinestatic

.cfi_escape Allows the user to add arbitrary bytes to the unwind info.

Definition at line 437 of file MCDwarf.h.

References OpEscape.

Referenced by llvm::MCStreamer::EmitCFIEscape().

static MCCFIInstruction llvm::MCCFIInstruction::createOffset ( MCSymbol L,
unsigned  Register,
int  Offset 
)
inlinestatic
static MCCFIInstruction llvm::MCCFIInstruction::createRegister ( MCSymbol L,
unsigned  Register1,
unsigned  Register2 
)
inlinestatic

.cfi_register Previous value of Register1 is saved in register Register2.

Definition at line 396 of file MCDwarf.h.

References OpRegister.

Referenced by llvm::MCStreamer::EmitCFIRegister(), and llvm::SparcFrameLowering::emitPrologue().

static MCCFIInstruction llvm::MCCFIInstruction::createRelOffset ( MCSymbol L,
unsigned  Register,
int  Offset 
)
inlinestatic

.cfi_rel_offset Previous value of Register is saved at offset Offset from the current CFA register.

This is transformed to .cfi_offset using the known displacement of the CFA register from the CFA.

Definition at line 389 of file MCDwarf.h.

References OpRelOffset.

Referenced by llvm::MCStreamer::EmitCFIRelOffset().

static MCCFIInstruction llvm::MCCFIInstruction::createRememberState ( MCSymbol L)
inlinestatic

.cfi_remember_state Save all current rules for all registers.

Definition at line 426 of file MCDwarf.h.

References OpRememberState.

Referenced by llvm::MCStreamer::EmitCFIRememberState().

static MCCFIInstruction llvm::MCCFIInstruction::createRestore ( MCSymbol L,
unsigned  Register 
)
inlinestatic

.cfi_restore says that the rule for Register is now the same as it was at the beginning of the function, after all initial instructions added by .cfi_startproc were executed.

Definition at line 409 of file MCDwarf.h.

References OpRestore.

Referenced by llvm::MCStreamer::EmitCFIRestore().

static MCCFIInstruction llvm::MCCFIInstruction::createRestoreState ( MCSymbol L)
inlinestatic

.cfi_restore_state Restore the previously saved state.

Definition at line 431 of file MCDwarf.h.

References OpRestoreState.

Referenced by llvm::MCStreamer::EmitCFIRestoreState().

static MCCFIInstruction llvm::MCCFIInstruction::createSameValue ( MCSymbol L,
unsigned  Register 
)
inlinestatic

.cfi_same_value Current value of Register is the same as in the previous frame.

I.e., no restoration is needed.

Definition at line 421 of file MCDwarf.h.

References OpSameValue.

Referenced by llvm::ARMFrameLowering::adjustForSegmentedStacks(), and llvm::MCStreamer::EmitCFISameValue().

static MCCFIInstruction llvm::MCCFIInstruction::createUndefined ( MCSymbol L,
unsigned  Register 
)
inlinestatic

.cfi_undefined From now on the previous value of Register can't be restored anymore.

Definition at line 415 of file MCDwarf.h.

References OpUndefined.

Referenced by llvm::MCStreamer::EmitCFIUndefined().

static MCCFIInstruction llvm::MCCFIInstruction::createWindowSave ( MCSymbol L)
inlinestatic

.cfi_window_save SPARC register window is saved.

Definition at line 402 of file MCDwarf.h.

References OpWindowSave.

Referenced by llvm::MCStreamer::EmitCFIWindowSave(), and llvm::SparcFrameLowering::emitPrologue().

MCSymbol* llvm::MCCFIInstruction::getLabel ( ) const
inline

Definition at line 442 of file MCDwarf.h.

int llvm::MCCFIInstruction::getOffset ( ) const
inline
OpType llvm::MCCFIInstruction::getOperation ( ) const
inline

Definition at line 441 of file MCDwarf.h.

Referenced by llvm::AsmPrinter::emitCFIInstruction().

unsigned llvm::MCCFIInstruction::getRegister ( ) const
inline
unsigned llvm::MCCFIInstruction::getRegister2 ( ) const
inline

Definition at line 452 of file MCDwarf.h.

References OpRegister, and Register2.

Referenced by llvm::AsmPrinter::emitCFIInstruction().

StringRef llvm::MCCFIInstruction::getValues ( ) const
inline

Definition at line 464 of file MCDwarf.h.

References OpEscape.

Member Data Documentation

int llvm::MCCFIInstruction::Offset

Definition at line 335 of file MCDwarf.h.

Referenced by getOffset().

unsigned llvm::MCCFIInstruction::Register2

Definition at line 336 of file MCDwarf.h.

Referenced by getRegister2().


The documentation for this class was generated from the following file: