LLVM 22.0.0git
Classes | Macros | Typedefs | Functions
CFIFixup.cpp File Reference
#include "llvm/CodeGen/CFIFixup.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/PostOrderIterator.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/TargetFrameLowering.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCDwarf.h"
#include "llvm/Target/TargetMachine.h"
#include <iterator>

Go to the source code of this file.

Classes

struct  BlockFlags
 
struct  InsertionPoint
 

Macros

#define DEBUG_TYPE   "cfi-fixup"
 

Typedefs

using BlockFlagsVector = SmallVector< BlockFlags, 32 >
 

Functions

 INITIALIZE_PASS (CFIFixup, "cfi-fixup", "Insert CFI remember/restore state instructions", false, false) FunctionPass *llvm
 
static bool isPrologueCFIInstruction (const MachineInstr &MI)
 
static bool containsEpilogue (const MachineBasicBlock &MBB)
 
static MachineBasicBlockfindPrologueEnd (MachineFunction &MF, MachineBasicBlock::iterator &PrologueEnd)
 
static BlockFlagsVector computeBlockInfo (const MachineFunction &MF, const MachineBasicBlock *PrologueBlock)
 
static InsertionPoint insertRememberRestorePair (const InsertionPoint &RememberInsertPt, const InsertionPoint &RestoreInsertPt)
 
static InsertionPoint cloneCfiPrologue (const InsertionPoint &PrologueEnd, const InsertionPoint &DstInsertPt)
 
static bool fixupBlock (MachineBasicBlock &CurrBB, const BlockFlagsVector &BlockInfo, SmallDenseMap< MBBSectionID, InsertionPoint > &InsertionPts, const InsertionPoint &Prologue)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "cfi-fixup"

Definition at line 89 of file CFIFixup.cpp.

Typedef Documentation

◆ BlockFlagsVector

Definition at line 140 of file CFIFixup.cpp.

Function Documentation

◆ cloneCfiPrologue()

static InsertionPoint cloneCfiPrologue ( const InsertionPoint PrologueEnd,
const InsertionPoint DstInsertPt 
)
static

◆ computeBlockInfo()

static BlockFlagsVector computeBlockInfo ( const MachineFunction MF,
const MachineBasicBlock PrologueBlock 
)
static

◆ containsEpilogue()

static bool containsEpilogue ( const MachineBasicBlock MBB)
static

Definition at line 102 of file CFIFixup.cpp.

References llvm::any_of(), llvm::MachineInstr::FrameDestroy, MBB, MI, and llvm::reverse().

Referenced by computeBlockInfo().

◆ findPrologueEnd()

static MachineBasicBlock * findPrologueEnd ( MachineFunction MF,
MachineBasicBlock::iterator PrologueEnd 
)
static

◆ fixupBlock()

static bool fixupBlock ( MachineBasicBlock CurrBB,
const BlockFlagsVector BlockInfo,
SmallDenseMap< MBBSectionID, InsertionPoint > &  InsertionPts,
const InsertionPoint Prologue 
)
static

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( CFIFixup  ,
"cfi-fixup"  ,
"Insert CFI remember/restore state instructions"  ,
false  ,
false   
)

Definition at line 93 of file CFIFixup.cpp.

◆ insertRememberRestorePair()

static InsertionPoint insertRememberRestorePair ( const InsertionPoint RememberInsertPt,
const InsertionPoint RestoreInsertPt 
)
static

◆ isPrologueCFIInstruction()

static bool isPrologueCFIInstruction ( const MachineInstr MI)
static

Definition at line 97 of file CFIFixup.cpp.

References llvm::MachineInstr::FrameSetup, and MI.

Referenced by cloneCfiPrologue(), and findPrologueEnd().