|
LLVM
4.0.0
|
#include "llvm/Transforms/IPO/SCCP.h"#include "llvm/ADT/DenseMap.h"#include "llvm/ADT/DenseSet.h"#include "llvm/ADT/PointerIntPair.h"#include "llvm/ADT/SmallPtrSet.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/Statistic.h"#include "llvm/Analysis/ConstantFolding.h"#include "llvm/Analysis/GlobalsModRef.h"#include "llvm/Analysis/TargetLibraryInfo.h"#include "llvm/IR/CallSite.h"#include "llvm/IR/Constants.h"#include "llvm/IR/DataLayout.h"#include "llvm/IR/DerivedTypes.h"#include "llvm/IR/InstVisitor.h"#include "llvm/IR/Instructions.h"#include "llvm/Pass.h"#include "llvm/Support/Debug.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Support/raw_ostream.h"#include "llvm/Transforms/IPO.h"#include "llvm/Transforms/Scalar.h"#include "llvm/Transforms/Scalar/SCCP.h"#include "llvm/Transforms/Utils/Local.h"#include <algorithm>Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "sccp" |
Functions | |
| STATISTIC (NumInstRemoved,"Number of instructions removed") | |
| STATISTIC (NumDeadBlocks,"Number of basic blocks unreachable") | |
| STATISTIC (IPNumInstRemoved,"Number of instructions removed by IPSCCP") | |
| STATISTIC (IPNumArgsElimed,"Number of arguments constant propagated by IPSCCP") | |
| STATISTIC (IPNumGlobalConst,"Number of globals found to be constant by IPSCCP") | |
| static bool | tryToReplaceWithConstant (SCCPSolver &Solver, Value *V) |
| static bool | runSCCP (Function &F, const DataLayout &DL, const TargetLibraryInfo *TLI) |
| INITIALIZE_PASS_BEGIN (SCCPLegacyPass,"sccp","Sparse Conditional Constant Propagation", false, false) INITIALIZE_PASS_END(SCCPLegacyPass | |
| static bool | AddressIsTaken (const GlobalValue *GV) |
| static void | findReturnsToZap (Function &F, SmallPtrSet< Function *, 32 > &AddressTakenFunctions, SmallVector< ReturnInst *, 8 > &ReturnsToZap) |
| static bool | runIPSCCP (Module &M, const DataLayout &DL, const TargetLibraryInfo *TLI) |
| INITIALIZE_PASS_BEGIN (IPSCCPLegacyPass,"ipsccp","Interprocedural Sparse Conditional Constant Propagation", false, false) INITIALIZE_PASS_END(IPSCCPLegacyPass | |
Variables | |
| sccp | |
| Sparse Conditional Constant | Propagation |
| Sparse Conditional Constant | false |
| ipsccp | |
|
static |
Definition at line 1648 of file SCCP.cpp.
References llvm::User::getOperand(), llvm::CallSiteBase< FunTy, BBTy, ValTy, UserTy, UseTy, InstrTy, CallTy, InvokeTy, IterTy >::isCallee(), llvm::StoreInst::isVolatile(), llvm::Constant::removeDeadConstantUsers(), and llvm::Value::uses().
Referenced by runIPSCCP().
|
static |
Definition at line 1675 of file SCCP.cpp.
References llvm::SmallPtrSetImpl< PtrType >::count(), llvm::GlobalValue::hasLocalLinkage(), and llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back().
Referenced by runIPSCCP().
| INITIALIZE_PASS_BEGIN | ( | SCCPLegacyPass | , |
| "sccp" | , | ||
| "Sparse Conditional Constant Propagation" | , | ||
| false | , | ||
| false | |||
| ) |
| INITIALIZE_PASS_BEGIN | ( | IPSCCPLegacyPass | , |
| "ipsccp" | , | ||
| "Interprocedural Sparse Conditional Constant Propagation" | , | ||
| false | , | ||
| false | |||
| ) |
|
static |
Definition at line 1688 of file SCCP.cpp.
References AddressIsTaken(), llvm::Function::arg_begin(), llvm::Function::arg_end(), llvm::Function::args(), assert(), llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT, BucketT >, KeyT, ValueT, KeyInfoT, BucketT >::begin(), llvm::Function::begin(), llvm::changeToUnreachable(), llvm::SmallVectorImpl< T >::clear(), llvm::ConstantFoldTerminator(), llvm::BranchInst::Create(), llvm::dbgs(), DEBUG, llvm::dyn_cast(), E, llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT, BucketT >, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::Function::end(), llvm::iplist_impl< IntrusiveListT, TraitsT >::erase(), llvm::Instruction::eraseFromParent(), findReturnsToZap(), llvm::Function::front(), G, llvm::UndefValue::get(), llvm::Function::getBasicBlockList(), llvm::Value::getName(), llvm::TerminatorInst::getNumSuccessors(), llvm::Instruction::getParent(), llvm::Function::getReturnType(), llvm::TerminatorInst::getSuccessor(), llvm::Value::getType(), llvm::GlobalValue::hasExactDefinition(), llvm::Function::hasFnAttribute(), llvm::GlobalValue::hasLocalLinkage(), I, i, llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::GlobalValue::isDeclaration(), llvm::Type::isStructTy(), llvm::Type::isVoidTy(), llvm_unreachable, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::BasicBlock::removePredecessor(), llvm::SmallVectorTemplateCommon< T >::size(), tryToReplaceWithConstant(), llvm::Value::use_empty(), llvm::Value::user_back(), llvm::Value::user_begin(), and llvm::Value::user_end().
Referenced by llvm::IPSCCPPass::run().
|
static |
Definition at line 1538 of file SCCP.cpp.
References llvm::Function::args(), llvm::dbgs(), DEBUG, E, llvm::Instruction::eraseFromParent(), llvm::Function::front(), llvm::Value::getName(), llvm::Value::getType(), llvm::isInstructionTriviallyDead(), llvm::Type::isVoidTy(), llvm::removeAllNonTerminatorAndEHPadInstructions(), and tryToReplaceWithConstant().
Referenced by llvm::SCCPPass::run().
| STATISTIC | ( | NumInstRemoved | , |
| "Number of instructions removed" | |||
| ) |
| STATISTIC | ( | NumDeadBlocks | , |
| "Number of basic blocks unreachable" | |||
| ) |
| STATISTIC | ( | IPNumInstRemoved | , |
| "Number of instructions removed by IPSCCP" | |||
| ) |
| STATISTIC | ( | IPNumArgsElimed | , |
| "Number of arguments constant propagated by IPSCCP" | |||
| ) |
| STATISTIC | ( | IPNumGlobalConst | , |
| "Number of globals found to be constant by IPSCCP" | |||
| ) |
Definition at line 1506 of file SCCP.cpp.
References llvm::any_of(), assert(), llvm::dbgs(), DEBUG, llvm::dyn_cast(), llvm::ConstantStruct::get(), llvm::UndefValue::get(), llvm::Value::getType(), i, llvm::Type::isStructTy(), llvm::Value::replaceAllUsesWith(), and llvm::ARM_MB::ST.
Referenced by runIPSCCP(), and runSCCP().
1.8.6