LLVM 18.0.0git
Macros | Functions | Variables
VPlanVerifier.cpp File Reference

This file defines the class VPlanVerifier, which contains utility functions to check the consistency and invariants of a VPlan. More...

#include "VPlanVerifier.h"
#include "VPlan.h"
#include "VPlanCFG.h"
#include "VPlanDominatorTree.h"
#include "llvm/ADT/DepthFirstIterator.h"
#include "llvm/Support/CommandLine.h"

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "loop-vectorize"
 

Functions

static bool hasDuplicates (const SmallVectorImpl< VPBlockBase * > &VPBlockVec)
 Utility function that checks whether VPBlockVec has duplicate VPBlockBases.
 
static void verifyBlocksInRegion (const VPRegionBlock *Region)
 Helper function that verifies the CFG invariants of the VPBlockBases within Region.
 
static void verifyRegion (const VPRegionBlock *Region)
 Verify the CFG invariants of VPRegionBlock Region and its nested VPBlockBases.
 
static void verifyRegionRec (const VPRegionBlock *Region)
 Verify the CFG invariants of VPRegionBlock Region and its nested VPBlockBases.
 
static bool verifyPhiRecipes (const VPBasicBlock *VPBB)
 
static bool verifyVPBasicBlock (const VPBasicBlock *VPBB, VPDominatorTree &VPDT)
 

Variables

static cl::opt< boolEnableHCFGVerifier ("vplan-verify-hcfg", cl::init(false), cl::Hidden, cl::desc("Verify VPlan H-CFG."))
 

Detailed Description

This file defines the class VPlanVerifier, which contains utility functions to check the consistency and invariants of a VPlan.

Definition in file VPlanVerifier.cpp.

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "loop-vectorize"

Definition at line 22 of file VPlanVerifier.cpp.

Function Documentation

◆ hasDuplicates()

static bool hasDuplicates ( const SmallVectorImpl< VPBlockBase * > &  VPBlockVec)
static

Utility function that checks whether VPBlockVec has duplicate VPBlockBases.

Definition at line 33 of file VPlanVerifier.cpp.

References llvm::Block, llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::count(), and llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert().

Referenced by verifyBlocksInRegion().

◆ verifyBlocksInRegion()

static void verifyBlocksInRegion ( const VPRegionBlock Region)
static

Helper function that verifies the CFG invariants of the VPBlockBases within Region.

Checks in this function are generic for VPBlockBases. They are not specific for VPBasicBlocks or VPRegionBlocks.

Definition at line 47 of file VPlanVerifier.cpp.

References assert(), llvm::RegionBase< Tr >::getEntry(), hasDuplicates(), llvm::is_contained(), and llvm::vp_depth_first_shallow().

Referenced by verifyRegion().

◆ verifyPhiRecipes()

static bool verifyPhiRecipes ( const VPBasicBlock VPBB)
static

◆ verifyRegion()

static void verifyRegion ( const VPRegionBlock Region)
static

Verify the CFG invariants of VPRegionBlock Region and its nested VPBlockBases.

Do not recurse inside nested VPRegionBlocks.

Definition at line 98 of file VPlanVerifier.cpp.

References assert(), llvm::RegionBase< Tr >::getEntry(), llvm::VPBlockBase::getNumSuccessors(), and verifyBlocksInRegion().

Referenced by verifyRegionRec().

◆ verifyRegionRec()

static void verifyRegionRec ( const VPRegionBlock Region)
static

Verify the CFG invariants of VPRegionBlock Region and its nested VPBlockBases.

Recurse inside nested VPRegionBlocks.

Definition at line 114 of file VPlanVerifier.cpp.

References llvm::RegionBase< Tr >::getEntry(), llvm::make_range(), verifyRegion(), and verifyRegionRec().

Referenced by llvm::VPlanVerifier::verifyHierarchicalCFG(), and verifyRegionRec().

◆ verifyVPBasicBlock()

static bool verifyVPBasicBlock ( const VPBasicBlock VPBB,
VPDominatorTree VPDT 
)
static

Variable Documentation

◆ EnableHCFGVerifier

cl::opt< bool > EnableHCFGVerifier("vplan-verify-hcfg", cl::init(false), cl::Hidden, cl::desc("Verify VPlan H-CFG.")) ( "vplan-verify-hcfg"  ,
cl::init(false)  ,
cl::Hidden  ,
cl::desc("Verify VPlan H-CFG.")   
)
static