LLVM 19.0.0git
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
llvm::LoopStructure Struct Reference

#include "llvm/Transforms/Utils/LoopConstrainer.h"

Public Member Functions

 LoopStructure ()=default
 
template<typename M >
LoopStructure map (M Map) const
 

Static Public Member Functions

static std::optional< LoopStructureparseLoopStructure (ScalarEvolution &, Loop &, bool, const char *&)
 

Public Attributes

const charTag = ""
 
BasicBlockHeader = nullptr
 
BasicBlockLatch = nullptr
 
BranchInstLatchBr = nullptr
 
BasicBlockLatchExit = nullptr
 
unsigned LatchBrExitIdx = std::numeric_limits<unsigned>::max()
 
ValueIndVarBase = nullptr
 
ValueIndVarStart = nullptr
 
ValueIndVarStep = nullptr
 
ValueLoopExitAt = nullptr
 
bool IndVarIncreasing = false
 
bool IsSignedPredicate = true
 
IntegerTypeExitCountTy = nullptr
 

Detailed Description

Definition at line 34 of file LoopConstrainer.h.

Constructor & Destructor Documentation

◆ LoopStructure()

llvm::LoopStructure::LoopStructure ( )
default

Member Function Documentation

◆ map()

template<typename M >
LoopStructure llvm::LoopStructure::map ( Map) const
inline

◆ parseLoopStructure()

std::optional< LoopStructure > LoopStructure::parseLoopStructure ( ScalarEvolution SE,
Loop L,
bool  AllowUnsignedLatchCond,
const char *&  FailureReason 
)
static

Definition at line 119 of file LoopConstrainer.cpp.

References assert(), llvm::cannotBeMaxInLoop(), llvm::cannotBeMinInLoop(), ClonedLoopTag, DL, llvm::SCEVExpander::expandCodeFor(), llvm::SCEV::FlagAnyWrap, llvm::SCEV::FlagNSW, llvm::SCEV::FlagNUW, llvm::IntegerType::get(), llvm::ScalarEvolution::getAddExpr(), llvm::IntegerType::getBitWidth(), llvm::BranchInst::getCondition(), llvm::Type::getContext(), llvm::Module::getDataLayout(), llvm::ScalarEvolution::getLoopDisposition(), llvm::Instruction::getMetadata(), llvm::ScalarEvolution::getMinusSCEV(), llvm::BasicBlock::getModule(), getNarrowestLatchMaxTakenCountEstimate(), llvm::ScalarEvolution::getNegativeSCEV(), llvm::ScalarEvolution::getOne(), llvm::User::getOperand(), llvm::CmpInst::getPredicate(), llvm::ScalarEvolution::getSCEV(), llvm::ScalarEvolution::getSignExtendExpr(), llvm::SCEVAddRecExpr::getStart(), llvm::SCEVAddRecExpr::getStepRecurrence(), llvm::BranchInst::getSuccessor(), llvm::CmpInst::getSwappedPredicate(), llvm::BasicBlock::getTerminator(), llvm::SCEV::getType(), llvm::Value::getType(), llvm::ConstantInt::getValue(), Header, I, llvm::CmpInst::ICMP_EQ, llvm::CmpInst::ICMP_NE, llvm::CmpInst::ICMP_SGT, llvm::CmpInst::ICMP_SLT, llvm::CmpInst::ICMP_UGT, llvm::CmpInst::ICMP_ULT, IndVarBase, IndVarStart, llvm::ICmpInst::isEquality(), llvm::isKnownNonNegativeInLoop(), llvm::ConstantInt::isMinusOne(), llvm::ConstantInt::isNegative(), llvm::ConstantInt::isOne(), isSafeDecreasingBound(), isSafeIncreasingBound(), llvm::CmpInst::isSigned(), IsSignedPredicate, llvm::BranchInst::isUnconditional(), llvm::ConstantInt::isZero(), Latch, LatchBr, LatchBrExitIdx, LatchExit, llvm::ScalarEvolution::LoopInvariant, llvm::Value::setName(), and std::swap().

Member Data Documentation

◆ ExitCountTy

IntegerType* llvm::LoopStructure::ExitCountTy = nullptr

Definition at line 61 of file LoopConstrainer.h.

Referenced by calculateSubRanges(), and map().

◆ Header

BasicBlock* llvm::LoopStructure::Header = nullptr

Definition at line 37 of file LoopConstrainer.h.

Referenced by map(), parseLoopStructure(), and llvm::LoopConstrainer::run().

◆ IndVarBase

Value* llvm::LoopStructure::IndVarBase = nullptr

Definition at line 55 of file LoopConstrainer.h.

Referenced by map(), parseLoopStructure(), and llvm::LoopConstrainer::run().

◆ IndVarIncreasing

bool llvm::LoopStructure::IndVarIncreasing = false

Definition at line 59 of file LoopConstrainer.h.

Referenced by calculateSubRanges(), map(), and llvm::LoopConstrainer::run().

◆ IndVarStart

Value* llvm::LoopStructure::IndVarStart = nullptr

Definition at line 56 of file LoopConstrainer.h.

Referenced by calculateSubRanges(), map(), and parseLoopStructure().

◆ IndVarStep

Value* llvm::LoopStructure::IndVarStep = nullptr

Definition at line 57 of file LoopConstrainer.h.

Referenced by map().

◆ IsSignedPredicate

bool llvm::LoopStructure::IsSignedPredicate = true

◆ Latch

BasicBlock* llvm::LoopStructure::Latch = nullptr

Definition at line 38 of file LoopConstrainer.h.

Referenced by map(), and parseLoopStructure().

◆ LatchBr

BranchInst* llvm::LoopStructure::LatchBr = nullptr

Definition at line 42 of file LoopConstrainer.h.

Referenced by map(), and parseLoopStructure().

◆ LatchBrExitIdx

unsigned llvm::LoopStructure::LatchBrExitIdx = std::numeric_limits<unsigned>::max()

Definition at line 44 of file LoopConstrainer.h.

Referenced by map(), and parseLoopStructure().

◆ LatchExit

BasicBlock* llvm::LoopStructure::LatchExit = nullptr

Definition at line 43 of file LoopConstrainer.h.

Referenced by map(), and parseLoopStructure().

◆ LoopExitAt

Value* llvm::LoopStructure::LoopExitAt = nullptr

Definition at line 58 of file LoopConstrainer.h.

Referenced by calculateSubRanges(), and map().

◆ Tag

const char* llvm::LoopStructure::Tag = ""

Definition at line 35 of file LoopConstrainer.h.

Referenced by map().


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