LLVM 20.0.0git
Classes | Macros | Functions | Variables
MachineBasicBlock.cpp File Reference
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/CodeGen/LiveIntervals.h"
#include "llvm/CodeGen/LivePhysRegs.h"
#include "llvm/CodeGen/LiveVariables.h"
#include "llvm/CodeGen/MachineDomTreeUpdater.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineJumpTableInfo.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/MachinePostDominators.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/SlotIndexes.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetLowering.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/ModuleSlotTracker.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCContext.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetMachine.h"
#include <algorithm>
#include <cmath>

Go to the source code of this file.

Classes

class  SlotIndexUpdateDelegate
 

Macros

#define DEBUG_TYPE   "codegen"
 
#define GET_RESULT(RESULT, GETTER, INFIX)
 

Functions

static int findJumpTableIndex (const MachineBasicBlock &MBB)
 
static bool jumpTableHasOtherUses (const MachineFunction &MF, const MachineBasicBlock &IgnoreMBB, int JumpTableIndex)
 
static void unbundleSingleMI (MachineInstr *MI)
 Prepare MI to be removed from its bundle.
 

Variables

static cl::opt< boolPrintSlotIndexes ("print-slotindexes", cl::desc("When printing machine IR, annotate instructions and blocks with " "SlotIndexes when available"), cl::init(true), cl::Hidden)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "codegen"

Definition at line 45 of file MachineBasicBlock.cpp.

◆ GET_RESULT

#define GET_RESULT (   RESULT,
  GETTER,
  INFIX 
)
Value:
[MF, P, MFAM]() { \
if (P) { \
auto *Wrapper = P->getAnalysisIfAvailable<RESULT##INFIX##WrapperPass>(); \
return Wrapper ? &Wrapper->GETTER() : nullptr; \
} \
return MFAM->getCachedResult<RESULT##Analysis>(*MF); \
}()
amdgpu aa AMDGPU Address space based Alias Analysis Wrapper
block Block Frequency Analysis
#define P(N)

Definition at line 1140 of file MachineBasicBlock.cpp.

Function Documentation

◆ findJumpTableIndex()

static int findJumpTableIndex ( const MachineBasicBlock MBB)
static

◆ jumpTableHasOtherUses()

static bool jumpTableHasOtherUses ( const MachineFunction MF,
const MachineBasicBlock IgnoreMBB,
int  JumpTableIndex 
)
static

◆ unbundleSingleMI()

static void unbundleSingleMI ( MachineInstr MI)
static

Prepare MI to be removed from its bundle.

This fixes bundle flags on MI's neighboring instructions so the bundle won't be broken by removing MI.

Definition at line 1431 of file MachineBasicBlock.cpp.

References MI.

Referenced by llvm::MachineBasicBlock::erase(), and llvm::MachineBasicBlock::remove_instr().

Variable Documentation

◆ PrintSlotIndexes

cl::opt< bool > PrintSlotIndexes("print-slotindexes", cl::desc("When printing machine IR, annotate instructions and blocks with " "SlotIndexes when available"), cl::init(true), cl::Hidden) ( "print-slotindexes"  ,
cl::desc("When printing machine IR, annotate instructions and blocks with " "SlotIndexes when available")  ,
cl::init(true ,
cl::Hidden   
)
static