LLVM 22.0.0git
PostRAHazardRecognizer.cpp File Reference

This runs the hazard recognizer and emits noops when necessary. More...

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "post-RA-hazard-rec"

Functions

 STATISTIC (NumNoops, "Number of noops inserted")
 INITIALIZE_PASS (PostRAHazardRecognizerLegacy, DEBUG_TYPE, "Post RA hazard recognizer", false, false) PreservedAnalyses llvm

Detailed Description

This runs the hazard recognizer and emits noops when necessary.

This gives targets a way to run the hazard recognizer without running one of the schedulers. Example use cases for this pass would be:

  • Targets that need the hazard recognizer to be run at -O0.
  • Targets that want to guarantee that hazards at the beginning of scheduling regions are handled correctly. The post-RA scheduler is a top-down scheduler, but when there are multiple scheduling regions in a basic block, it visits the regions in bottom-up order. This makes it impossible for the scheduler to gauranttee it can correctly handle hazards at the beginning of scheduling regions.

This pass traverses all the instructions in a program in top-down order. In contrast to the instruction scheduling passes, this pass never resets the hazard recognizer to ensure it can correctly handles noop hazards at the beginning of blocks.

Definition in file PostRAHazardRecognizer.cpp.

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "post-RA-hazard-rec"

Definition at line 39 of file PostRAHazardRecognizer.cpp.

Function Documentation

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( PostRAHazardRecognizerLegacy ,
DEBUG_TYPE ,
"Post RA hazard recognizer" ,
false ,
false  )

◆ STATISTIC()

STATISTIC ( NumNoops ,
"Number of noops inserted"  )