|
LLVM 22.0.0git
|
#include "llvm/IR/Constants.h"#include "LLVMContextImpl.h"#include "llvm/ADT/STLExtras.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/StringMap.h"#include "llvm/IR/BasicBlock.h"#include "llvm/IR/ConstantFold.h"#include "llvm/IR/DerivedTypes.h"#include "llvm/IR/Function.h"#include "llvm/IR/GetElementPtrTypeIterator.h"#include "llvm/IR/GlobalAlias.h"#include "llvm/IR/GlobalIFunc.h"#include "llvm/IR/GlobalValue.h"#include "llvm/IR/GlobalVariable.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/Operator.h"#include "llvm/IR/PatternMatch.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Support/MathExtras.h"#include "llvm/Support/raw_ostream.h"#include <algorithm>#include "llvm/IR/Value.def"Go to the source code of this file.
Macros | |
| #define | HANDLE_CONSTANT(Name) |
| #define | HANDLE_CONSTANT(Name) |
Functions | |
| static bool | containsUndefinedElement (const Constant *C, function_ref< bool(const Constant *)> HasFn) |
| static bool | ConstHasGlobalValuePredicate (const Constant *C, bool(*Predicate)(const GlobalValue *)) |
| Check if C contains a GlobalValue for which Predicate is true. | |
| static bool | constantIsDead (const Constant *C, bool RemoveDeadUsers) |
| Return true if the specified constantexpr is dead. | |
| template<typename ItTy, typename EltTy> | |
| static bool | rangeOnlyContains (ItTy Start, ItTy End, EltTy Elt) |
| template<typename SequentialTy, typename ElementTy> | |
| static Constant * | getIntSequenceIfElementsMatch (ArrayRef< Constant * > V) |
| template<typename SequentialTy, typename ElementTy> | |
| static Constant * | getFPSequenceIfElementsMatch (ArrayRef< Constant * > V) |
| template<typename SequenceTy> | |
| static Constant * | getSequenceIfElementsMatch (Constant *C, ArrayRef< Constant * > V) |
| static Constant * | getFoldedCast (Instruction::CastOps opc, Constant *C, Type *Ty, bool OnlyIfReduced=false) |
| This is a utility function to handle folding of casts and lookup of the cast in the ExprConstants map. | |
| static bool | isAllZeros (StringRef Arr) |
| Return true if the array is empty or all zeros. | |
Variables | |
| static cl::opt< bool > | UseConstantIntForFixedLengthSplat ("use-constant-int-for-fixed-length-splat", cl::init(false), cl::Hidden, cl::desc("Use ConstantInt's native fixed-length vector splat support.")) |
| static cl::opt< bool > | UseConstantFPForFixedLengthSplat ("use-constant-fp-for-fixed-length-splat", cl::init(false), cl::Hidden, cl::desc("Use ConstantFP's native fixed-length vector splat support.")) |
| static cl::opt< bool > | UseConstantIntForScalableSplat ("use-constant-int-for-scalable-splat", cl::init(false), cl::Hidden, cl::desc("Use ConstantInt's native scalable vector splat support.")) |
| static cl::opt< bool > | UseConstantFPForScalableSplat ("use-constant-fp-for-scalable-splat", cl::init(false), cl::Hidden, cl::desc("Use ConstantFP's native scalable vector splat support.")) |
| #define HANDLE_CONSTANT | ( | Name | ) |
| #define HANDLE_CONSTANT | ( | Name | ) |
Return true if the specified constantexpr is dead.
This involves recursively traversing users of the constantexpr. If RemoveDeadUsers is true, also remove dead users at the same time.
Definition at line 730 of file Constants.cpp.
References llvm::CallingConv::C, constantIsDead(), llvm::dyn_cast(), E(), I, llvm::isa(), and llvm::ReplaceableMetadataImpl::SalvageDebugInfo().
Referenced by constantIsDead(), and llvm::Constant::removeDeadConstantUsers().
|
static |
Check if C contains a GlobalValue for which Predicate is true.
Definition at line 619 of file Constants.cpp.
References llvm::CallingConv::C, llvm::dyn_cast(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::SmallVectorImpl< T >::pop_back_val(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Referenced by llvm::Constant::isDLLImportDependent(), and llvm::Constant::isThreadDependent().
|
static |
Definition at line 340 of file Constants.cpp.
References llvm::CallingConv::C, llvm::cast(), llvm::dyn_cast(), getNumElements(), and llvm::isa().
Referenced by llvm::Constant::containsPoisonElement(), llvm::Constant::containsUndefElement(), and llvm::Constant::containsUndefOrPoisonElement().
|
static |
This is a utility function to handle folding of casts and lookup of the cast in the ExprConstants map.
It is used by the various get* methods below.
Definition at line 2215 of file Constants.cpp.
References assert(), llvm::CallingConv::C, llvm::ConstantFoldCastInstruction(), llvm::LLVMContextImpl::ExprConstants, and llvm::InnerAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs... >::Key.
Referenced by llvm::ConstantExpr::getAddrSpaceCast(), llvm::ConstantExpr::getBitCast(), llvm::ConstantExpr::getIntToPtr(), llvm::ConstantExpr::getPtrToAddr(), llvm::ConstantExpr::getPtrToInt(), and llvm::ConstantExpr::getTrunc().
|
static |
Definition at line 1272 of file Constants.cpp.
References assert(), llvm::CallingConv::C, llvm::dyn_cast(), getType(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Referenced by getSequenceIfElementsMatch().
|
static |
Definition at line 1259 of file Constants.cpp.
References assert(), llvm::CallingConv::C, llvm::dyn_cast(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Referenced by getSequenceIfElementsMatch().
|
static |
Definition at line 1285 of file Constants.cpp.
References llvm::CallingConv::C, llvm::dyn_cast(), getFPSequenceIfElementsMatch(), and getIntSequenceIfElementsMatch().
Return true if the array is empty or all zeros.
Definition at line 2897 of file Constants.cpp.
References I.
Referenced by llvm::ConstantDataSequential::getImpl().
|
static |
Definition at line 1251 of file Constants.cpp.
|
static |
Referenced by llvm::ConstantVector::getSplat().
|
static |
Referenced by llvm::ConstantVector::getSplat().
|
static |
Referenced by llvm::ConstantVector::getSplat().
|
static |
Referenced by llvm::ConstantVector::getSplat().