LLVM
8.0.1
|
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/GraphTraits.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/PostDominators.h"
#include "llvm/Transforms/Utils/Local.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Use.h"
#include "llvm/IR/User.h"
#include "llvm/IR/Value.h"
#include "llvm/IR/Verifier.h"
#include "llvm/Pass.h"
#include "llvm/Support/Allocator.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <iterator>
#include <map>
#include <set>
#include <utility>
#include <vector>
Go to the source code of this file.
Classes | |
struct | false::GepNode |
struct | false::in_set |
Namespaces | |
llvm | |
This class represents lattice values for constants. | |
false | |
Macros | |
#define | DEBUG_TYPE "commgep" |
Functions | |
void | llvm::initializeHexagonCommonGEPPass (PassRegistry &) |
INITIALIZE_PASS_BEGIN (HexagonCommonGEP, "hcommgep", "Hexagon Common GEP", false, false) INITIALIZE_PASS_END(HexagonCommonGEP | |
Type * | false::next_type (Type *Ty, Value *Idx) |
raw_ostream & | false::operator<< (raw_ostream &OS, const GepNode &GN) |
template<typename NodeContainer > | |
void | false::dump_node_container (raw_ostream &OS, const NodeContainer &S) |
raw_ostream & | false::operator<< (raw_ostream &OS, const NodeVect &S) LLVM_ATTRIBUTE_UNUSED |
raw_ostream & | false::operator<< (raw_ostream &OS, const NodeToUsesMap &M) LLVM_ATTRIBUTE_UNUSED |
void * | operator new (size_t, SpecificBumpPtrAllocator< GepNode > &A) |
static void | invert_find_roots (const NodeVect &Nodes, NodeChildrenMap &NCM, NodeVect &Roots) |
static void | nodes_for_root (GepNode *Root, NodeChildrenMap &NCM, NodeSet &Nodes) |
static const NodeSet * | node_class (GepNode *N, NodeSymRel &Rel) |
static NodePair | node_pair (GepNode *N1, GepNode *N2) |
static unsigned | node_hash (GepNode *N) |
static bool | node_eq (GepNode *N1, GepNode *N2, NodePairSet &Eq, NodePairSet &Ne) |
template<typename T > | |
static BasicBlock * | nearest_common_dominator (DominatorTree *DT, T &Blocks) |
template<typename T > | |
static BasicBlock * | nearest_common_dominatee (DominatorTree *DT, T &Blocks) |
template<typename T > | |
static BasicBlock::iterator | first_use_of_in_block (T &Values, BasicBlock *B) |
static bool | is_empty (const BasicBlock *B) |
static BasicBlock * | preheader (DominatorTree *DT, Loop *L) |
FunctionPass * | llvm::createHexagonCommonGEP () |
Variables | |
static cl::opt< bool > | OptSpeculate ("commgep-speculate", cl::init(true), cl::Hidden, cl::ZeroOrMore) |
static cl::opt< bool > | OptEnableInv ("commgep-inv", cl::init(true), cl::Hidden, cl::ZeroOrMore) |
static cl::opt< bool > | OptEnableConst ("commgep-const", cl::init(true), cl::Hidden, cl::ZeroOrMore) |
hcommgep | |
Hexagon Common | GEP |
Hexagon Common | false |
#define DEBUG_TYPE "commgep" |
Definition at line 10 of file HexagonCommonGEP.cpp.
|
static |
Definition at line 724 of file HexagonCommonGEP.cpp.
References B, E, llvm::BasicBlock::end(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::Instruction::getParent(), I, and llvm::tgtok::In.
|
static |
Definition at line 432 of file HexagonCommonGEP.cpp.
|
static |
Definition at line 750 of file HexagonCommonGEP.cpp.
References llvm::BasicBlock::begin(), llvm::BasicBlock::empty(), and llvm::BasicBlock::getTerminator().
|
static |
Definition at line 698 of file HexagonCommonGEP.cpp.
References B, llvm::DominatorTree::dominates(), E, llvm::DominatorTreeBase< NodeT, IsPostDom >::getRoot(), and I.
Referenced by preheader().
|
static |
Definition at line 669 of file HexagonCommonGEP.cpp.
References B, llvm::dbgs(), E, llvm::DominatorTreeBase< NodeT, IsPostDom >::findNearestCommonDominator(), llvm::Value::getName(), I, and LLVM_DEBUG.
|
static |
Definition at line 498 of file HexagonCommonGEP.cpp.
References assert(), llvm::sys::path::begin(), llvm::NodeSet::begin(), C, llvm::dbgs(), E, llvm::NodeSet::empty(), llvm::sys::path::end(), llvm::NodeSet::end(), F(), H, I, llvm::MipsISD::Ins, llvm::NodeSet::insert(), LLVM_DEBUG, llvm::AArch64CC::NE, node_class(), node_hash(), node_pair(), llvm::NodeOrder, P, and llvm::remove_if().
|
static |
Definition at line 490 of file HexagonCommonGEP.cpp.
References llvm::FoldingSetNodeID::AddPointer(), and llvm::FoldingSetNodeID::ComputeHash().
Referenced by node_eq().
|
static |
Definition at line 483 of file HexagonCommonGEP.cpp.
Referenced by node_eq().
|
static |
Definition at line 447 of file HexagonCommonGEP.cpp.
References llvm::NodeSet::insert().
|
inline |
Definition at line 318 of file HexagonCommonGEP.cpp.
References B, llvm::BasicBlock::begin(), llvm::dbgs(), E, llvm::BasicBlock::end(), F(), llvm::GetElementPtrInst::getPointerOperand(), llvm::Value::getType(), I, llvm::GetElementPtrInst::idx_begin(), llvm::GetElementPtrInst::idx_end(), llvm::GetElementPtrInst::isInBounds(), llvm::Type::isPointerTy(), LLVM_DEBUG, N, false::next_type(), llvm::NodeOrder, llvm::Value::user_begin(), and llvm::Value::user_end().
|
static |
Definition at line 865 of file HexagonCommonGEP.cpp.
References llvm::DomTreeNodeBase< NodeT >::getBlock(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::DomTreeNodeBase< NodeT >::getIDom(), llvm::LoopBase< BlockT, LoopT >::getLoopPreheader(), llvm::DominatorTreeBase< NodeT, IsPostDom >::getNode(), nearest_common_dominatee(), and OptSpeculate.
Hexagon Common false |
Definition at line 170 of file HexagonCommonGEP.cpp.
Hexagon Common GEP |
Definition at line 170 of file HexagonCommonGEP.cpp.
Referenced by alwaysAvailable(), llvm::PredicatedScalarEvolution::areAddRecsEqualWithPreds(), areLoopExitPHIsSupported(), BatchCommitValueTo(), llvm::ObjectSizeOffsetVisitor::bothKnown(), llvm::ObjectSizeOffsetEvaluator::bothKnown(), BrPHIToSelect(), buildNew(), calculateVectorIndex(), canTransformToMemCmp(), chainToBasePointerCost(), CleanupConstantGlobalUsers(), cloneInstructionWithNewAddressSpace(), llvm::InstCombiner::commonPointerCastTransforms(), llvm::ObjectSizeOffsetVisitor::compute(), llvm::ObjectSizeOffsetEvaluator::compute(), computeUnsignedMinMaxValuesFromKnownBits(), llvm::ConstantFoldLoadFromConstPtr(), llvm::GetElementPtrInst::CreateInBounds(), createMaskedBitTest(), llvm::createSeparateConstOffsetFromGEPPass(), doPromotion(), llvm::EmitGEPOffset(), llvm::Evaluator::EvaluateBlock(), llvm::FastISel::fastMaterializeFloatZero(), findBaseDefiningValue(), findBaseDefiningValueOfVector(), llvm::CodeExtractor::findInputsOutputs(), findLoadCallsAtConstantOffset(), findRematerializableChainToBasePointer(), FindSingleUseIdentifiedObject(), llvm::gep_type_begin(), llvm::ScalarEvolution::getAddRecExpr(), getAdjustedPtr(), llvm::ConstantExpr::getAlignOf(), getBaseType(), llvm::getConstantDataArrayInfo(), llvm::MemoryDependenceResults::getInvariantGroupPointerDependency(), llvm::ConstantExpr::getOffsetOf(), getParameterABIAttributes(), llvm::GetPointerBaseWithConstantOffset(), getPointerOperands(), llvm::ConstantExpr::getSizeOf(), llvm::InstCombiner::getTargetLibraryInfo(), llvm::GetUnderlyingObject(), getUniformBase(), llvm::AMDGPUTTIImpl::getUnrollingPreferences(), llvm::X86TTIImpl::getUserCost(), llvm::TargetTransformInfoImplCRTPBase< AMDGPUTTIImpl >::getUserCost(), hasOnlyOneNonZeroIndex(), hasSameExtUse(), llvm::FastISel::hasTrivialKill(), hasValueBeenRAUWed(), INITIALIZE_PASS(), isAddFoldable(), isCallPromotable(), llvm::IsConstantOffsetFromGlobal(), isDereferenceableAndAlignedPointer(), isFreeInLoop(), isGEPFoldable(), isInBoundsGep(), isKnownNonZero(), isKnownTypeIdMember(), isLoopIncrement(), IsNonLocalValue(), isNoWrapAddRec(), isOnlyCopiedFromConstantGlobal(), isPromotedInstructionLegal(), IsPtrInBounds(), IsSafeComputationToRemove(), isSafeToPromoteArgument(), LLVMGetNumIndices(), LLVMIsInBounds(), LLVMSetIsInBounds(), matchesOr(), maybePrintCallAddrSpace(), passingValueIsAlwaysUndefined(), llvm::PHITransAddr::PHITranslateWithInsertion(), propagateMetadata(), RemoveInstInputs(), reportLoadElim(), llvm::WholeProgramDevirtPass::run(), llvm::StackProtector::runOnFunction(), llvm::salvageDebugInfo(), shouldInstrumentBlock(), shouldInstrumentReadWriteFromAddress(), simplifyAllocaArraySize(), SimplifyWithOpReplaced(), AllocaSlices::SliceBuilder::SliceBuilder(), splitGlobal(), SRAGlobal(), llvm::Value::stripAndAccumulateInBoundsConstantOffsets(), stripAndComputeConstantOffsets(), llvm::stripGetElementPtr(), switchToSelect(), tryPromoteAllocaToVector(), tryToVectorizeHorReductionOrInstOperands(), TypeSizeToSizeIndex(), unifyBitWidth(), llvm::sroa::AllocaSliceRewriter::visit(), llvm::InstCombiner::visitExtractValueInst(), llvm::InstCombiner::visitGetElementPtrInst(), llvm::InstCombiner::visitStoreInst(), llvm::InnerLoopVectorizer::widenInstruction(), wrapConstantAsMetadata(), and WriteOptimizationInfo().
hcommgep |
Definition at line 170 of file HexagonCommonGEP.cpp.
Referenced by preheader().