LLVM  8.0.1
Functions
MachineVerifier.cpp File Reference
#include "LiveRangeCalc.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/DepthFirstIterator.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SetOperations.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Analysis/EHPersonalities.h"
#include "llvm/CodeGen/GlobalISel/RegisterBank.h"
#include "llvm/CodeGen/LiveInterval.h"
#include "llvm/CodeGen/LiveIntervals.h"
#include "llvm/CodeGen/LiveStacks.h"
#include "llvm/CodeGen/LiveVariables.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBundle.h"
#include "llvm/CodeGen/MachineMemOperand.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/PseudoSourceValue.h"
#include "llvm/CodeGen/SlotIndexes.h"
#include "llvm/CodeGen/StackMaps.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetOpcodes.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/InlineAsm.h"
#include "llvm/IR/Instructions.h"
#include "llvm/MC/LaneBitmask.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCInstrDesc.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/MC/MCTargetOptions.h"
#include "llvm/Pass.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/LowLevelTypeImpl.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetMachine.h"
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <iterator>
#include <string>
#include <utility>

Go to the source code of this file.

Functions

 INITIALIZE_PASS (MachineVerifierPass, "machineverifier", "Verify generated machine code", false, false) FunctionPass *llvm
 
static bool matchPair (MachineBasicBlock::const_succ_iterator i, const MachineBasicBlock *a, const MachineBasicBlock *b)
 

Function Documentation

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( MachineVerifierPass  ,
"machineverifier"  ,
"Verify generated machine code"  ,
false  ,
false   
)

Definition at line 319 of file MachineVerifier.cpp.

◆ matchPair()

Definition at line 605 of file MachineVerifier.cpp.

References llvm::LiveVariables::VarInfo::AliveBlocks, llvm::all_of(), llvm::TargetInstrInfo::analyzeBranch(), llvm::LaneBitmask::any(), assert(), llvm::MachineBasicBlock::back(), llvm::LiveRange::begin(), llvm::SmallPtrSetImpl< PtrType >::begin(), llvm::MachineFunction::begin(), llvm::StatepointOpers::CCOffset, llvm::ConnectedVNInfoEqClasses::Classify(), llvm::classifyEHPersonality(), llvm::SmallPtrSetImplBase::clear(), llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT, BucketT >, KeyT, ValueT, KeyInfoT, BucketT >::clear(), llvm::BitVector::clear(), llvm::MachineOperand::clobbersPhysReg(), llvm::LiveInterval::computeSubRangeUndefs(), llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT, BucketT >, KeyT, ValueT, KeyInfoT, BucketT >::count(), llvm::SmallPtrSetImpl< PtrType >::count(), llvm::SmallPtrSetImpl< NodeRef >::count(), llvm::LiveRange::covers(), llvm::StringRef::data(), llvm::VNInfo::def, llvm::MachineRegisterInfo::def_begin(), llvm::MachineRegisterInfo::def_empty(), llvm::MachineRegisterInfo::def_end(), llvm::df_ext_begin(), llvm::df_ext_end(), llvm::dyn_cast(), E, llvm::SmallVectorBase::empty(), llvm::SmallPtrSetImplBase::empty(), llvm::MachineBasicBlock::empty(), llvm::LiveRange::Segment::end, llvm::LiveRange::end(), llvm::MachineFunction::end(), llvm::SmallPtrSetImpl< PtrType >::erase(), llvm::errs(), F(), llvm::MachineInstr::findTiedOperandIdx(), llvm::StatepointOpers::FlagsOffset, llvm::LaneBitmask::getAll(), llvm::MachineBasicBlock::getBasicBlock(), llvm::LiveIntervals::getCachedRegUnit(), llvm::TargetInstrInfo::getCallFrameDestroyOpcode(), llvm::TargetInstrInfo::getCallFrameSetupOpcode(), llvm::SlotIndex::getDeadSlot(), llvm::MachineInstr::getDesc(), llvm::LLT::getElementType(), llvm::ConnectedVNInfoEqClasses::getEqClass(), llvm::MCAsmInfo::getExceptionHandlingType(), llvm::FixedStackPseudoSourceValue::getFrameIndex(), llvm::MachineFunction::getFrameInfo(), llvm::TargetInstrInfo::getFrameTotalSize(), llvm::MachineFunction::getFunction(), llvm::MCOperandInfo::getGenericTypeIndex(), llvm::MachineOperand::getImm(), llvm::MachineOperand::getIndex(), llvm::LiveIntervals::getInstructionFromIndex(), llvm::LiveIntervals::getInstructionIndex(), llvm::SlotIndexes::getInstructionIndex(), llvm::LiveStacks::getInterval(), llvm::LiveIntervals::getInterval(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::TargetRegisterInfo::getLargestLegalSuperClass(), llvm::TargetRegisterInfo::getMatchingSuperRegClass(), llvm::MachineRegisterInfo::getMaxLaneMaskForVReg(), llvm::MachineOperand::getMBB(), llvm::LiveIntervals::getMBBEndIdx(), llvm::SlotIndexes::getMBBEndIdx(), llvm::LiveIntervals::getMBBFromIndex(), llvm::LiveIntervals::getMBBStartIdx(), llvm::SlotIndexes::getMBBStartIdx(), llvm::TargetMachine::getMCAsmInfo(), llvm::RegisterBank::getName(), llvm::MachineBasicBlock::getNumber(), llvm::MachineFunction::getNumBlockIDs(), llvm::MCInstrDesc::getNumDefs(), llvm::LLT::getNumElements(), llvm::InlineAsm::getNumOperandRegisters(), llvm::MCInstrDesc::getNumOperands(), llvm::MachineInstr::getNumOperands(), llvm::MCRegisterInfo::getNumRegUnits(), llvm::LiveRange::getNumValNums(), llvm::MachineRegisterInfo::getNumVirtRegs(), llvm::MCInstrDesc::getOpcode(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MCInstrDesc::getOperandConstraint(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getParent(), llvm::MachineInstr::getParent(), llvm::Function::getPersonalityFn(), llvm::SlotIndex::getPrevSlot(), llvm::MachineFrameInfo::getPristineRegs(), llvm::MachineFunction::getProperties(), llvm::MachineOperand::getReg(), getReg(), llvm::MachineRegisterInfo::getRegBankOrNull(), llvm::TargetInstrInfo::getRegClass(), llvm::TargetRegisterInfo::getRegClassName(), llvm::MachineRegisterInfo::getRegClassOrNull(), llvm::MachineOperand::getRegMask(), llvm::TargetRegisterInfo::getRegSizeInBits(), llvm::SlotIndex::getRegSlot(), llvm::RegisterBank::getSize(), llvm::LLT::getSizeInBits(), llvm::TargetRegisterInfo::getSubClassWithSubReg(), llvm::MachineOperand::getSubReg(), llvm::TargetRegisterInfo::getSubRegIndexLaneMask(), llvm::BasicBlock::getTerminator(), llvm::MachineOperand::getType(), llvm::MachineRegisterInfo::getType(), llvm::LiveRange::getValNumInfo(), llvm::StatepointOpers::getVarIdx(), llvm::LiveVariables::getVarInfo(), llvm::LiveRange::getVNInfoAt(), llvm::LiveRange::getVNInfoBefore(), llvm::SlotIndexes::hasIndex(), llvm::LiveStacks::hasInterval(), llvm::LiveIntervals::hasInterval(), llvm::MachineInstr::hasOneMemOperand(), llvm::MachineFunctionProperties::hasProperty(), llvm::TargetRegisterInfo::hasRegUnit(), llvm::LiveInterval::hasSubRanges(), llvm::TargetRegisterClass::hasSuperClassEq(), I, llvm::VNInfo::id, llvm::StatepointOpers::IDPos, llvm::TargetRegisterInfo::index2VirtReg(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::is_contained(), llvm::MachineInstr::isBarrier(), llvm::SlotIndex::isBlock(), llvm::SlotIndex::isDead(), llvm::MachineOperand::isDead(), llvm::LiveQueryResult::isDeadDef(), llvm::MachineOperand::isDebug(), llvm::MachineInstr::isDebugInstr(), llvm::MachineInstr::isDebugValue(), llvm::MachineOperand::isDef(), llvm::SlotIndex::isEarlyClobber(), llvm::MachineOperand::isEarlyClobber(), llvm::MachineBasicBlock::isEHPad(), llvm::MCOperandInfo::isGenericType(), llvm::MachineOperand::isImm(), llvm::MachineOperand::isImplicit(), llvm::MachineInstr::isInlineAsm(), llvm::MachineInstr::isInsideBundle(), llvm::MachineOperand::isInternalRead(), llvm::LiveRangeCalc::isJointlyDominated(), llvm::LiveQueryResult::isKill(), llvm::MachineOperand::isKill(), llvm::LiveIntervals::isLiveInToMBB(), llvm::MachineOperand::isMBB(), llvm::MachineOperand::isMetadata(), llvm::LiveIntervals::isNotInMIMap(), llvm::MCOperandInfo::isOptionalDef(), llvm::MachineInstr::isPHI(), llvm::VNInfo::isPHIDef(), llvm::TargetRegisterInfo::isPhysicalRegister(), llvm::LLT::isPointer(), llvm::TargetInstrInfo::isPredicated(), llvm::isPreISelGenericOpcode(), llvm::MachineOperand::isReg(), llvm::SlotIndex::isRegister(), llvm::MachineInstr::isRegTiedToDefOperand(), llvm::MachineOperand::isRenamable(), llvm::MachineRegisterInfo::isReserved(), llvm::MachineRegisterInfo::isReservedRegUnit(), llvm::SlotIndex::isSameInstr(), llvm::isScopedEHPersonality(), llvm::MachineRegisterInfo::isSSA(), llvm::MachineBasicBlock::isSuccessor(), llvm::MachineOperand::isSymbol(), llvm::MachineInstr::isTerminator(), llvm::MachineOperand::isTied(), llvm::MachineOperand::isUndef(), llvm::VNInfo::isUnused(), llvm::MachineOperand::isUse(), llvm::LLT::isValid(), llvm::MachineOperandIteratorBase::isValid(), llvm::MCRegisterInfo::DiffListIterator::isValid(), llvm::MachineInstr::isVariadic(), llvm::LLT::isVector(), llvm::TargetRegisterInfo::isVirtualRegister(), llvm::LiveVariables::VarInfo::Kills, llvm::LiveRange::liveAt(), llvm::MachineBasicBlock::liveins(), llvm::BitmaskEnumDetail::Mask(), llvm::max(), llvm::MachineInstr::mayLoad(), llvm::MachineInstr::mayStore(), llvm::MachineInstr::memoperands(), llvm::MachineInstr::memoperands_begin(), llvm::MachineInstr::memoperands_end(), MI, llvm::InlineAsm::MIOp_FirstOperand, llvm::MachineOperand::MO_FrameIndex, llvm::MachineOperand::MO_MachineBasicBlock, llvm::MachineOperand::MO_Register, llvm::MachineOperand::MO_RegisterMask, MRI, llvm::StatepointOpers::NBytesPos, llvm::StatepointOpers::NCallArgsPos, llvm::LaneBitmask::none(), llvm::MachineFunctionProperties::NoPHIs, llvm::StatepointOpers::NumDeoptOperandsOffset, llvm::MachineInstr::operands_begin(), llvm::MachineInstr::operands_end(), llvm::MCInstrDesc::OpInfo, llvm::MachineBasicBlock::pred_begin(), llvm::MachineBasicBlock::pred_end(), llvm::MachineBasicBlock::predecessors(), llvm::printMBBReference(), llvm::printReg(), llvm::LiveRange::Query(), llvm::MachineOperand::readsReg(), llvm::LiveInterval::reg, Reg, llvm::MachineRegisterInfo::reg_nodbg_empty(), llvm::SmallVectorImpl< T >::resize(), llvm::BitVector::set_bits(), llvm::set_subtract(), llvm::set_union(), llvm::MachineRegisterInfo::shouldTrackSubRegLiveness(), Size, llvm::SmallVectorBase::size(), llvm::SmallPtrSetImplBase::size(), llvm::SjLj, llvm::LiveRange::Segment::start, stores, llvm::LiveInterval::subranges(), llvm::MachineBasicBlock::succ_begin(), llvm::MachineBasicBlock::succ_end(), llvm::MachineBasicBlock::succ_size(), llvm::SparseBitVector< ElementSize >::test(), llvm::MCOI::TIED_TO, llvm::MachineRegisterInfo::tracksLiveness(), TRI, llvm::MachineInstr::uses(), llvm::LiveRange::Segment::valno, llvm::LiveRange::valnos, llvm::LiveQueryResult::valueIn(), llvm::TargetInstrInfo::verifyInstruction(), VI, llvm::LiveRange::vni_begin(), and llvm::LiveRange::vni_end().