|
LLVM 23.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 | shouldUseConstantPointerNullForVector (VectorType *VTy) |
| 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 * | getByteSequenceIfElementsMatch (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(true), 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(true), cl::Hidden, cl::desc("Use ConstantFP's native scalable vector splat support.")) |
| static cl::opt< bool > | UseConstantPtrNullForFixedLengthSplat ("use-constant-ptrnull-for-fixed-length-splat", cl::init(true), cl::Hidden, cl::desc("Use ConstantPointerNull's native fixed-length vector splat " "support.")) |
| static cl::opt< bool > | UseConstantPtrNullForScalableSplat ("use-constant-ptrnull-for-scalable-splat", cl::init(true), cl::Hidden, cl::desc("Use ConstantPointerNull'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 776 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 665 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 356 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 |
Definition at line 1406 of file Constants.cpp.
References assert(), llvm::CallingConv::C, llvm::dyn_cast(), getType(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Referenced by getSequenceIfElementsMatch().
|
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 2422 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 1419 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 1393 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 1432 of file Constants.cpp.
References llvm::CallingConv::C, llvm::dyn_cast(), getByteSequenceIfElementsMatch(), getFPSequenceIfElementsMatch(), and getIntSequenceIfElementsMatch().
Return true if the array is empty or all zeros.
Definition at line 3115 of file Constants.cpp.
References I.
Referenced by llvm::ConstantDataSequential::getImpl().
|
static |
Definition at line 1385 of file Constants.cpp.
|
static |
Definition at line 60 of file Constants.cpp.
References UseConstantPtrNullForFixedLengthSplat, and UseConstantPtrNullForScalableSplat.
Referenced by llvm::Constant::getNullValue(), and llvm::ConstantVector::getSplat().
|
static |
Referenced by llvm::ConstantVector::getSplat().
|
static |
Referenced by llvm::ConstantVector::getSplat().
|
static |
Referenced by llvm::ConstantVector::getSplat().
|
static |
Referenced by llvm::ConstantVector::getSplat().
|
static |
Referenced by shouldUseConstantPointerNullForVector().
|
static |
Referenced by shouldUseConstantPointerNullForVector().