LLVM  12.0.0git
Macros | Functions | Variables
AssumeBundleBuilder.cpp File Reference
#include "llvm/Transforms/Utils/AssumeBundleBuilder.h"
#include "llvm/ADT/DepthFirstIterator.h"
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/AssumeBundleQueries.h"
#include "llvm/Analysis/AssumptionCache.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Module.h"
#include "llvm/InitializePasses.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/DebugCounter.h"
#include "llvm/Transforms/Utils/Local.h"
Include dependency graph for AssumeBundleBuilder.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "assume-builder"
 

Functions

 STATISTIC (NumAssumeBuilt, "Number of assume built by the assume builder")
 
 STATISTIC (NumBundlesInAssumes, "Total number of Bundles in the assume built")
 
 STATISTIC (NumAssumesMerged, "Number of assume merged by the assume simplify pass")
 
 STATISTIC (NumAssumesRemoved, "Number of assume removed by the assume simplify pass")
 
 DEBUG_COUNTER (BuildAssumeCounter, "assume-builder-counter", "Controls which assumes gets created")
 
 INITIALIZE_PASS_BEGIN (AssumeSimplifyPassLegacyPass, "assume-simplify", "Assume Simplify", false, false) INITIALIZE_PASS_END(AssumeSimplifyPassLegacyPass
 
 INITIALIZE_PASS_BEGIN (AssumeBuilderPassLegacyPass, "assume-builder", "Assume Builder", false, false) INITIALIZE_PASS_END(AssumeBuilderPassLegacyPass
 

Variables

cl::opt< boolShouldPreserveAllAttributes ("assume-preserve-all", cl::init(false), cl::Hidden, cl::desc("enable preservation of all attrbitues. even those that are " "unlikely to be usefull"))
 
cl::opt< boolEnableKnowledgeRetention ("enable-knowledge-retention", cl::init(false), cl::Hidden, cl::desc("enable preservation of attributes throughout code transformation"))
 
assume simplify
 
assume Assume Simplify
 
assume Assume false
 
assume builder
 
assume Assume Builder
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "assume-builder"

Definition at line 9 of file AssumeBundleBuilder.cpp.

Function Documentation

◆ DEBUG_COUNTER()

DEBUG_COUNTER ( BuildAssumeCounter  ,
"assume-builder-counter"  ,
"Controls which assumes gets created"   
)

◆ INITIALIZE_PASS_BEGIN() [1/2]

INITIALIZE_PASS_BEGIN ( AssumeSimplifyPassLegacyPass  ,
"assume-simplify ,
"Assume Simplify ,
false  ,
false   
)

◆ INITIALIZE_PASS_BEGIN() [2/2]

INITIALIZE_PASS_BEGIN ( AssumeBuilderPassLegacyPass  ,
"assume-builder ,
"Assume Builder ,
false  ,
false   
)

◆ STATISTIC() [1/4]

STATISTIC ( NumAssumeBuilt  ,
"Number of assume built by the assume builder  
)

◆ STATISTIC() [2/4]

STATISTIC ( NumBundlesInAssumes  ,
"Total number of Bundles in the assume built"   
)

◆ STATISTIC() [3/4]

STATISTIC ( NumAssumesMerged  ,
"Number of assume merged by the assume simplify pass  
)

◆ STATISTIC() [4/4]

STATISTIC ( NumAssumesRemoved  ,
"Number of assume removed by the assume simplify pass  
)

Variable Documentation

◆ builder

assume builder

◆ Builder

assume Assume Builder

Definition at line 617 of file AssumeBundleBuilder.cpp.

Referenced by addFramePointerAttrs(), Prefetch::addInstruction(), llvm::pdb::DbiModuleDescriptorBuilder::addSymbolsInBulk(), llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), annotateAnyAllocSite(), areInverseVectorBitmasks(), AreSequentialAccesses(), atomicSizeSupported(), bitTrackingDCE(), llvm::buildAssumeFromInst(), llvm::coro::buildCoroutineFrame(), buildMultiplyTree(), canCreateThunkFor(), canFoldIVIncExpr(), CanGenerateTest(), canNarrowShiftAmt(), llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedAdd(), CloneLoopBlocks(), combineInstructionsOverFunction(), llvm::InstCombiner::combineLoadToNewType(), llvm::pdb::DbiModuleDescriptorBuilder::commit(), llvm::InstCombiner::commonIDivTransforms(), llvm::InstCombiner::commonShiftTransforms(), llvm::InstCombiner::computeOverflow(), llvm::sampleprof::SampleProfileWriter::computeSummary(), llvm::sampleprof::SampleProfileReader::computeSummary(), computeUnsignedMinMaxValuesFromKnownBits(), concatSubVector(), llvm::ConstantFoldTerminator(), llvm::SIInstrInfo::copyPhysReg(), llvm::createAMDGPUPrintfRuntimeBinding(), llvm::OpenMPIRBuilder::CreateCachedThreadPrivate(), llvm::OpenMPIRBuilder::CreateCancel(), createCloneDeclaration(), llvm::OpenMPIRBuilder::CreateCopyinClauseBlocks(), llvm::OpenMPIRBuilder::CreateCritical(), createFFSIntrinsic(), llvm::OpenMPIRBuilder::CreateMaster(), createMemSetLoop(), llvm::OpenMPIRBuilder::CreateOMPAlloc(), llvm::OpenMPIRBuilder::CreateOMPFree(), llvm::OpenMPIRBuilder::CreateParallel(), createRdxShuffleMask(), createReplacementInstr(), createResumeEntryBlock(), llvm::createScalarizerPass(), llvm::createSeparateConstOffsetFromGEPPass(), llvm::createSVEIntrinsicOptsPass(), decomposeSimpleLinearExpr(), llvm::deleteDeadLoop(), despeculateCountZeros(), eliminateSwiftErrorArgument(), llvm::OpenMPIRBuilder::emitBarrierImpl(), llvm::OpenMPIRBuilder::emitCancelationCheckImpl(), llvm::OpenMPIRBuilder::emitFlush(), emitSetAndGetSwiftErrorValueAround(), llvm::OpenMPIRBuilder::emitTaskwaitImpl(), llvm::OpenMPIRBuilder::emitTaskyieldImpl(), ensurePromotedGV(), llvm::VPWidenCanonicalIVRecipe::execute(), llvm::VPlan::execute(), llvm::expandAtomicRMWToCmpXchg(), llvm::SCEVExpander::expandCodeFor(), llvm::expandDivision(), llvm::expandDivisionUpTo32Bits(), llvm::expandDivisionUpTo64Bits(), llvm::SCEVExpander::expandEqualPredicate(), llvm::expandRemainder(), llvm::expandRemainderUpTo32Bits(), llvm::expandRemainderUpTo64Bits(), llvm::SCEVExpander::expandUnionPredicate(), llvm::SCEVExpander::expandWrapPredicate(), findInsertPointAfter(), findPreviousSpillSlot(), findSelectThroughCast(), foldAndOrOfEqualityCmpsWithConstants(), foldAndOrOfICmpsWithConstEq(), foldAnyOrAllBitsSet(), llvm::FoldBranchToCommonDest(), foldGuardedRotateToFunnelShift(), foldICmpBitCast(), foldICmpShlOne(), foldICmpWithMinMax(), foldICmpWithZextOrSext(), foldLogicCastConstant(), foldNoWrapAdd(), foldOperationIntoPhiValue(), foldOperationIntoSelectOperand(), llvm::InstCombiner::FoldShiftByConstant(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), FoldTwoEntryPHINode(), llvm::InstCombiner::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldVecTruncToExtElt(), foldXorToXor(), generateLoopLatchCheck(), genLoopLimit(), llvm::VPTransformState::get(), llvm::codeview::AppendingTypeTableBuilder::getAllocator(), llvm::codeview::MergingTypeTableBuilder::getAllocator(), getBinOpsForFactorization(), getChainID(), llvm::HexagonTargetLowering::getInlineAsmMemConstraint(), getInnermostLoopFor(), getInsertPt(), llvm::SCEVExpander::getIVIncOperand(), llvm::getKnownAlignment(), llvm::VNCoercion::getLoadValueForLoad(), llvm::VNCoercion::getMemInstValueForLoad(), getMulHu(), getNegatibleInsts(), getNegativeIsTrueBoolVec(), getNumBytes(), getNumElements(), llvm::AArch64TTIImpl::getOrCreateResultFromMemIntrinsic(), llvm::OpenMPIRBuilder::getOrCreateSrcLocStr(), llvm::OpenMPIRBuilder::getOrCreateThreadID(), llvm::SCEVExpander::getOrInsertCanonicalInductionVariable(), getOrInsertValueProfilingCall(), llvm::coro::Shape::getPromiseField(), GetRMWLibcall(), getScalarIntrinsicDeclaration(), getSelectFoldableConstant(), getSign32(), llvm::VNCoercion::getStoreValueForLoad(), getSubprogram(), getSuccState(), llvm::slpvectorizer::BoUpSLP::getTreeCost(), getTrueOrFalseValue(), getVectorCallCosts(), group2Shuffle(), HandleByValArgumentInit(), handleNoSuspendCoroutine(), hasAllGatScatUsers(), llvm::IndexedInstrProfReader::hasFormat(), hasStoreUsersOnly(), hasUndefContents(), llvm::SCEVExpander::hoistIVInc(), INITIALIZE_PASS(), llvm::InlineFunction(), llvm::slpvectorizer::BoUpSLP::BlockScheduling::ReadyList::insert(), llvm::codeview::GlobalTypeTableBuilder::insertRecordAs(), insertRelocationStores(), insertSpills(), insertValues(), instrumentOneFunc(), inversePermutation(), isCallPromotable(), isGEPFoldable(), IsIncrementNUW(), isIndirectBrTarget(), IsNonLocalValue(), isPromotedResultSafe(), isReInterleaveMask(), isReportingError(), isSafeToEliminateVarargsCast(), isSafeToHoistInvoke(), isSafeToSpeculateStore(), isSelect01(), isUnconditionalBranch(), isZeroLengthArray(), LLVMPassManagerBuilderAddCoroutinePassesToExtensionPoints(), LLVMPassManagerBuilderDispose(), LLVMPassManagerBuilderPopulateFunctionPassManager(), LLVMPassManagerBuilderPopulateLTOPassManager(), LLVMPassManagerBuilderPopulateModulePassManager(), LLVMPassManagerBuilderSetDisableUnrollLoops(), LLVMPassManagerBuilderSetOptLevel(), LLVMPassManagerBuilderSetSizeLevel(), LLVMPassManagerBuilderUseInlinerWithThreshold(), LowerAtomicCmpXchgInst(), LowerAtomicRMWInst(), LowerBSWAP(), LowerCTLZ(), LowerCTPOP(), llvm::AArch64TargetLowering::lowerInterleavedLoad(), llvm::ARMTargetLowering::lowerInterleavedLoad(), llvm::X86TargetLowering::lowerInterleavedLoad(), llvm::AArch64TargetLowering::lowerInterleavedStore(), llvm::ARMTargetLowering::lowerInterleavedStore(), llvm::X86TargetLowering::lowerInterleavedStore(), llvm::IntrinsicLowering::LowerIntrinsicCall(), lowerLocalAllocas(), lowerNonLocalAlloca(), lowerObjCCall(), llvm::lowerObjectSizeCall(), LowerRotate(), lowerStatepointMetaArgs(), lowerSubFn(), makeStatepointExplicitImpl(), llvm::orc::makeStub(), MarkBlocksLiveIn(), llvm::SIInstrInfo::materializeImmediate(), mayLoopAccessLocation(), mergeCleanupPad(), llvm::VPRecipeBase::moveAfter(), moveUp(), MulWillOverflow(), normalizePredicate(), operator<<(), OptimizeNoopCopyExpression(), llvm::InstCombiner::OptimizePointerDifference(), optimizeSQRT(), optimizeWithFDivFast(), performAtomicOp(), performMaskedAtomicOp(), llvm::PredicateInfo::PredicateInfo(), processUGT_ADDCST_ADD(), processUMulZExtIdiom(), promotedOpIsNUW(), llvm::InstCombiner::reassociateShiftAmtsOfTwoSameDirectionShifts(), RemovePreallocated(), removeUndefIntroducingPredecessor(), reorderSubVector(), ReplaceCallWith(), llvm::SCEVExpander::replaceCongruentIVs(), replaceSwiftErrorOps(), llvm::LoopPredicationPass::run(), llvm::InstCombiner::run(), llvm::salvageKnowledge(), scalarizeMaskedCompressStore(), scalarizeMaskedExpandLoad(), scalarizeMaskedGather(), scalarizeMaskedLoad(), scalarizeMaskedScatter(), scalarizeMaskedStore(), llvm::FastISel::selectStackmap(), setBranchWeights(), llvm::ARMTargetLowering::shouldFormOverflowOp(), llvm::AArch64TargetLowering::shouldFormOverflowOp(), llvm::RISCVTargetLowering::shouldInsertFencesForAtomic(), llvm::PPCTargetLowering::shouldInsertFencesForAtomic(), shouldKeepInEntry(), shouldMergeGEPs(), ShrinkDemandedConstant(), SimplifyBSwap(), SimplifyCondBranchToCondBranch(), llvm::InstCombiner::simplifyRangeCheck(), simplifyRelocatesOffABase(), simplifyX86vpermv(), llvm::InstCombiner::SliceUpIllegalIntegerPHI(), spillIncomingStatepointValue(), splitMergedValStore(), SplitOpsAndApply(), splitRetconCoroutine(), stripNonValidDataFromBody(), llvm::ToVectorTy(), transformToIndexedCompare(), translateExtract(), truncateIVUse(), tryPromoteAllocaToVector(), TryToMergeLandingPad(), tryToRecognizePopCount(), unifyBitWidth(), updateCoroFrame(), llvm::UpgradeARCRuntime(), llvm::UpgradeIntrinsicCall(), llvm::slpvectorizer::BoUpSLP::vectorizeTree(), versionCallSite(), llvm::sroa::AllocaSliceRewriter::visit(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAddrSpaceCast(), llvm::InstCombiner::visitAllocaInst(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitAShr(), llvm::InstCombiner::visitBitCast(), llvm::InstCombiner::visitCallInst(), llvm::InstCombiner::visitExtractElementInst(), llvm::InstCombiner::visitExtractValueInst(), llvm::InstCombiner::visitFAdd(), llvm::InstCombiner::visitFCmpInst(), llvm::InstCombiner::visitFDiv(), llvm::InstCombiner::visitFMul(), llvm::InstCombiner::visitFNeg(), llvm::InstCombiner::visitFPTrunc(), llvm::InstCombiner::visitFSub(), llvm::InstCombiner::visitGetElementPtrInst(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitInsertElementInst(), llvm::InstCombiner::visitIntToPtr(), visitIVCast(), llvm::InstCombiner::visitLoadInst(), llvm::InstCombiner::visitLShr(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitPtrToInt(), llvm::InstCombiner::visitSDiv(), llvm::InstCombiner::visitSExt(), llvm::InstCombiner::visitShl(), llvm::InstCombiner::visitShuffleVectorInst(), llvm::InstCombiner::visitSRem(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitSwitchInst(), llvm::InstCombiner::visitTrunc(), llvm::InstCombiner::visitUDiv(), llvm::InstCombiner::visitURem(), llvm::InstCombiner::visitXor(), llvm::InstCombiner::visitZExt(), WriteGadgetGraph(), and ExpandedValuesCleaner::~ExpandedValuesCleaner().

◆ EnableKnowledgeRetention

cl::opt<bool> EnableKnowledgeRetention("enable-knowledge-retention", cl::init(false), cl::Hidden, cl::desc( "enable preservation of attributes throughout code transformation"))

◆ false

assume Assume false

Definition at line 570 of file AssumeBundleBuilder.cpp.

◆ ShouldPreserveAllAttributes

cl::opt<bool> ShouldPreserveAllAttributes("assume-preserve-all", cl::init(false), cl::Hidden, cl::desc("enable preservation of all attrbitues. even those that are " "unlikely to be usefull"))

◆ simplify

assume simplify

Definition at line 570 of file AssumeBundleBuilder.cpp.

◆ Simplify

assume Assume Simplify

Definition at line 570 of file AssumeBundleBuilder.cpp.