LLVM 17.0.0git
|
#include "llvm/Analysis/Lint.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/AssumptionCache.h"
#include "llvm/Analysis/ConstantFolding.h"
#include "llvm/Analysis/InstructionSimplify.h"
#include "llvm/Analysis/Loads.h"
#include "llvm/Analysis/MemoryLocation.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/IR/Argument.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/InstVisitor.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Value.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/KnownBits.h"
#include "llvm/Support/raw_ostream.h"
#include <cassert>
#include <cstdint>
#include <iterator>
#include <string>
Go to the source code of this file.
Namespaces | |
namespace | MemRef |
Macros | |
#define | Check(C, ...) |
Functions | |
static bool | isZero (Value *V, const DataLayout &DL, DominatorTree *DT, AssumptionCache *AC) |
INITIALIZE_PASS_BEGIN (LintLegacyPass, "lint", "Statically lint-checks LLVM IR", false, true) INITIALIZE_PASS_END(LintLegacyPass | |
Variables | |
lint | |
Statically lint checks LLVM | IR |
Statically lint checks LLVM | false |
#define Check | ( | C, | |
... | |||
) |
|
static |
Definition at line 524 of file Lint.cpp.
References llvm::CallingConv::C, llvm::computeKnownBits(), DL, I, llvm::KnownBits::isZero(), and N.
Referenced by llvm::CanonicalLoopInfo::assertOK(), combineAnd(), combineAndnp(), createShuffleMaskFromVSELECT(), llvm::IRBuilderBase::CreateVScale(), llvm::ConstantRange::ctlz(), FoldSTEP_VECTOR(), llvm::ConstantStruct::get(), llvm::APInt::getBoolValue(), llvm::SelectionDAG::getNode(), impliesEquivalanceIfFalse(), impliesEquivalanceIfTrue(), llvm::APInt::isMinValue(), llvm::APInt::isNullValue(), llvm::SelectionDAG::isSplatValue(), llvm::APInt::isStrictlyPositive(), llvm::APSInt::isStrictlyPositive(), llvm::APInt::operator!(), llvm::ScaledNumber< DigitsT >::operator*=(), llvm::ScaledNumber< DigitsT >::operator/=(), llvm::JumpThreadingPass::processThreadableEdges(), rewriteGEPAsOffset(), llvm::X86TargetLowering::SimplifyDemandedVectorEltsForTargetNode(), updateBufferMMO(), llvm::LoopVectorizeHints::vectorizeAnalysisPassName(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitOr(), and llvm::InstCombinerImpl::visitSub().
Definition at line 746 of file Lint.cpp.
Referenced by llvm::mca::Scheduler::analyzeDataDependencies(), llvm::IRComparer< T >::analyzeIR(), llvm::OuterAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs >::Result::cachedResultExists(), llvm::mca::AMDGPUCustomBehaviour::checkCustomHazard(), llvm::mca::Stage::checkNextStage(), llvm::mca::checkRegisterHazard(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::clear(), llvm::mca::Scheduler::cycleEvent(), llvm::mca::ExecuteStage::cycleStart(), llvm::mca::InOrderIssueStage::cycleStart(), llvm::mca::LSUnit::dispatch(), llvm::mca::RetireControlUnit::dispatch(), llvm::mca::Scheduler::dispatch(), llvm::mca::DispatchStage::execute(), llvm::mca::ExecuteStage::execute(), llvm::mca::InOrderIssueStage::execute(), llvm::mca::InstructionTables::execute(), llvm::mca::MicroOpQueueStage::execute(), llvm::mca::RetireStage::execute(), llvm::mca::findFirstWriteBackCycle(), llvm::DotCfgChangeReporter::generateIRRepresentation(), llvm::InLineChangePrinter::generateIRRepresentation(), llvm::IRChangedPrinter::generateIRRepresentation(), llvm::detail::getAnalysisResult(), llvm::detail::getAnalysisResultUnpackTuple(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::getCachedResult(), llvm::OuterAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs >::Result::getCachedResult(), GetFunctions(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::getResult(), llvm::DotCfgChangeReporter::handleAfter(), llvm::InLineChangePrinter::handleAfter(), llvm::TextChangeReporter< std::string >::handleIgnored(), llvm::TextChangeReporter< IRUnitT >::handleInitialIR(), llvm::IRChangedTester::handleInitialIR(), llvm::DotCfgChangeReporter::handleInitialIR(), llvm::ChangeReporter< IRUnitT >::handleIRAfterPass(), llvm::mca::LSUnitBase::hasDependentUsers(), llvm::mca::hasResourceHazard(), llvm::mca::Scheduler::instructionCheck(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::Invalidator::invalidate(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::invalidate(), llvm::detail::AnalysisResultModel< IRUnitT, PassT, ResultT, PreservedAnalysesT, InvalidatorT, true >::invalidate(), llvm::mca::InOrderIssueStage::isAvailable(), llvm::mca::Scheduler::isAvailable(), llvm::mca::LSUnit::isAvailable(), llvm::mca::DispatchStage::isAvailable(), llvm::mca::ExecuteStage::isAvailable(), llvm::mca::MicroOpQueueStage::isAvailable(), llvm::mca::LSUnitBase::isPending(), llvm::mca::LSUnitBase::isReady(), llvm::mca::Scheduler::issueInstruction(), llvm::mca::LSUnitBase::isWaiting(), llvm::mca::Stage::moveToTheNextStage(), llvm::mca::Scheduler::mustIssueImmediately(), llvm::mca::ExecuteStage::notifyInstructionExecuted(), llvm::mca::ExecuteStage::notifyInstructionIssued(), llvm::mca::ExecuteStage::notifyInstructionPending(), llvm::mca::ExecuteStage::notifyInstructionReady(), llvm::mca::RetireStage::notifyInstructionRetired(), llvm::mca::ExecuteStage::notifyReservedOrReleasedBuffers(), llvm::mca::MemoryGroup::onGroupIssued(), llvm::mca::MemoryGroup::onInstructionExecuted(), llvm::mca::LSUnitBase::onInstructionExecuted(), llvm::mca::LSUnit::onInstructionExecuted(), llvm::mca::RetireControlUnit::onInstructionExecuted(), llvm::mca::MemoryGroup::onInstructionIssued(), llvm::mca::LSUnitBase::onInstructionIssued(), llvm::mca::LSUnitBase::onInstructionRetired(), llvm::operator<<(), llvm::mca::operator<<(), llvm::PrintIRInstrumentation::registerCallbacks(), llvm::OptNoneInstrumentation::registerCallbacks(), llvm::OptPassGateInstrumentation::registerCallbacks(), llvm::PrintPassInstrumentation::registerCallbacks(), llvm::VerifyInstrumentation::registerCallbacks(), llvm::TimeProfilingPassesHandler::registerCallbacks(), llvm::PrintCrashIRInstrumentation::registerCallbacks(), llvm::PseudoProbeVerifier::registerCallbacks(), llvm::PreservedCFGCheckerInstrumentation::registerCallbacks(), llvm::DebugifyEachInstrumentation::registerCallbacks(), llvm::ChangeReporter< IRUnitT >::registerRequiredCallbacks(), llvm::FunctionToLoopPassAdaptor::run(), llvm::detail::AnalysisPassModel< IRUnitT, PassT, PreservedAnalysesT, InvalidatorT, ExtraArgTs >::run(), llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::run(), llvm::detail::PassModel< IRUnitT, PassT, PreservedAnalysesT, AnalysisManagerT, ExtraArgTs >::run(), llvm::RepeatedPass< PassT >::run(), llvm::MachineFunctionPassManager::run(), llvm::PassInstrumentation::runAfterAnalysis(), llvm::PassInstrumentation::runAfterPass(), llvm::PseudoProbeVerifier::runAfterPass(), llvm::PassInstrumentation::runAnalysisInvalidated(), llvm::PassInstrumentation::runBeforeAnalysis(), llvm::PassInstrumentation::runBeforePass(), llvm::PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >::runSinglePass(), llvm::ChangeReporter< IRUnitT >::saveIRBeforePass(), llvm::mca::Scheduler::select(), llvm::OptPassGateInstrumentation::shouldRun(), llvm::mca::verifyInstructionEliminated(), and llvm::AnalysisManager< IRUnitT, ExtraArgTs >::verifyNotInvalidated().