LLVM 17.0.0git
Public Member Functions | Static Public Member Functions | List of all members
llvm::VPlanVerifier Struct Reference

Struct with utility functions that can be used to check the consistency and invariants of a VPlan, including the components of its H-CFG. More...

#include "Transforms/Vectorize/VPlanVerifier.h"

Public Member Functions

void verifyHierarchicalCFG (const VPRegionBlock *TopRegion) const
 Verify the invariants of the H-CFG starting from TopRegion.
 

Static Public Member Functions

static bool verifyPlanIsValid (const VPlan &Plan)
 Verify invariants for general VPlans.
 

Detailed Description

Struct with utility functions that can be used to check the consistency and invariants of a VPlan, including the components of its H-CFG.

Definition at line 33 of file VPlanVerifier.h.

Member Function Documentation

◆ verifyHierarchicalCFG()

void VPlanVerifier::verifyHierarchicalCFG ( const VPRegionBlock TopRegion) const

Verify the invariants of the H-CFG starting from TopRegion.

The verification process comprises the following steps:

  1. Region/Block verification: Check the Region/Block verification invariants for every region in the H-CFG.

Definition at line 126 of file VPlanVerifier.cpp.

References assert(), llvm::dbgs(), EnableHCFGVerifier, llvm::VPBlockBase::getParent(), LLVM_DEBUG, and verifyRegionRec().

Referenced by llvm::VPlanHCFGBuilder::buildHierarchicalCFG().

◆ verifyPlanIsValid()

bool VPlanVerifier::verifyPlanIsValid ( const VPlan Plan)
static

Verify invariants for general VPlans.

Currently it checks the following:

  1. all phi-like recipes must be at the beginning of a block, with no other recipes in between. Note that currently there is still an exception for VPBlendRecipes.

Definition at line 233 of file VPlanVerifier.cpp.

References llvm::VPInstruction::BranchOnCond, llvm::VPInstruction::BranchOnCount, llvm::VPBasicBlock::empty(), llvm::VPBasicBlock::end(), llvm::errs(), llvm::VPlan::getEntry(), llvm::RegionBase< Tr >::getEntry(), llvm::VPRegionBlock::getEntry(), llvm::VPRegionBlock::getExiting(), llvm::VPlan::getLiveOuts(), llvm::VPlan::getVectorLoopRegion(), llvm::DominatorTreeBase< NodeT, IsPostDom >::recalculate(), verifyVPBasicBlock(), and llvm::vp_depth_first_deep().


The documentation for this struct was generated from the following files: