LLVM  14.0.0git
Macros | Functions
Constants.cpp File Reference
#include "llvm/IR/Constants.h"
#include "ConstantFold.h"
#include "LLVMContextImpl.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/GetElementPtrTypeIterator.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Operator.h"
#include "llvm/IR/PatternMatch.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include "llvm/IR/Value.def"
Include dependency graph for Constants.cpp:

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 canTrapImpl (const Constant *C, SmallPtrSetImpl< const ConstantExpr * > &NonTrappingOps)
 
static bool ConstHasGlobalValuePredicate (const Constant *C, bool(*Predicate)(const GlobalValue *))
 Check if C contains a GlobalValue for which Predicate is true. More...
 
static bool constantIsDead (const Constant *C, bool RemoveDeadUsers)
 Return true if the specified constantexpr is dead. More...
 
template<typename ItTy , typename EltTy >
static bool rangeOnlyContains (ItTy Start, ItTy End, EltTy Elt)
 
template<typename SequentialTy , typename ElementTy >
static ConstantgetIntSequenceIfElementsMatch (ArrayRef< Constant * > V)
 
template<typename SequentialTy , typename ElementTy >
static ConstantgetFPSequenceIfElementsMatch (ArrayRef< Constant * > V)
 
template<typename SequenceTy >
static ConstantgetSequenceIfElementsMatch (Constant *C, ArrayRef< Constant * > V)
 
static ConstantgetFoldedCast (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. More...
 
static bool isAllZeros (StringRef Arr)
 Return true if the array is empty or all zeros. More...
 

Macro Definition Documentation

◆ HANDLE_CONSTANT [1/2]

#define HANDLE_CONSTANT (   Name)
Value:
case Value::Name##Val: \
cast<Name>(this)->destroyConstantImpl(); \
break;

◆ HANDLE_CONSTANT [2/2]

#define HANDLE_CONSTANT (   Name)
Value:
case Value::Name##Val: \
Replacement = cast<Name>(this)->handleOperandChangeImpl(From, To); \
break;

Function Documentation

◆ canTrapImpl()

static bool canTrapImpl ( const Constant C,
SmallPtrSetImpl< const ConstantExpr * > &  NonTrappingOps 
)
static

◆ constantIsDead()

static bool constantIsDead ( const Constant C,
bool  RemoveDeadUsers 
)
static

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 720 of file Constants.cpp.

References E, llvm::UndefValue::get(), and I.

Referenced by llvm::Constant::hasOneLiveUse(), and llvm::Constant::removeDeadConstantUsers().

◆ ConstHasGlobalValuePredicate()

static bool ConstHasGlobalValuePredicate ( const Constant C,
bool(*)(const GlobalValue *)  Predicate 
)
static

Check if C contains a GlobalValue for which Predicate is true.

Definition at line 611 of file Constants.cpp.

References llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::User::operands(), and llvm::SmallVectorImpl< T >::pop_back_val().

Referenced by llvm::Constant::isDLLImportDependent(), and llvm::Constant::isThreadDependent().

◆ containsUndefinedElement()

static bool containsUndefinedElement ( const Constant C,
function_ref< bool(const Constant *)>  HasFn 
)
static

◆ getFoldedCast()

static Constant* getFoldedCast ( Instruction::CastOps  opc,
Constant C,
Type Ty,
bool  OnlyIfReduced = false 
)
static

◆ getFPSequenceIfElementsMatch()

template<typename SequentialTy , typename ElementTy >
static Constant* getFPSequenceIfElementsMatch ( ArrayRef< Constant * >  V)
static

◆ getIntSequenceIfElementsMatch()

template<typename SequentialTy , typename ElementTy >
static Constant* getIntSequenceIfElementsMatch ( ArrayRef< Constant * >  V)
static

Definition at line 1214 of file Constants.cpp.

References assert(), llvm::ArrayRef< T >::empty(), and get.

◆ getSequenceIfElementsMatch()

template<typename SequenceTy >
static Constant* getSequenceIfElementsMatch ( Constant C,
ArrayRef< Constant * >  V 
)
static

Definition at line 1240 of file Constants.cpp.

◆ isAllZeros()

static bool isAllZeros ( StringRef  Arr)
static

Return true if the array is empty or all zeros.

Definition at line 2952 of file Constants.cpp.

References I.

Referenced by llvm::ConstantDataSequential::getImpl().

◆ rangeOnlyContains()

template<typename ItTy , typename EltTy >
static bool rangeOnlyContains ( ItTy  Start,
ItTy  End,
EltTy  Elt 
)
static

Definition at line 1206 of file Constants.cpp.

llvm::GraphProgram::Name
Name
Definition: GraphWriter.h:52
From
BlockVerifier::State From
Definition: BlockVerifier.cpp:55