LLVM  6.0.0svn
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/StringExtras.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/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 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 removeDeadUsersOfConstant (const Constant *C)
 If the specified constantexpr is dead, remove it. More...
 
static const fltSemanticsTypeToFloatSemantics (Type *Ty)
 
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;
const char * Name

◆ HANDLE_CONSTANT [2/2]

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

Function Documentation

◆ canTrapImpl()

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

◆ ConstHasGlobalValuePredicate()

static bool ConstHasGlobalValuePredicate ( const Constant C,
bool(*)(const GlobalValue *)  Predicate 
)
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

◆ getSequenceIfElementsMatch()

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

Definition at line 841 of file Constants.cpp.

◆ isAllZeros()

static bool isAllZeros ( StringRef  Arr)
static

Return true if the array is empty or all zeros.

Definition at line 2313 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 807 of file Constants.cpp.

References llvm::WebAssembly::End.

Referenced by llvm::ConstantArray::get().

◆ removeDeadUsersOfConstant()

static bool removeDeadUsersOfConstant ( const Constant C)
static

If the specified constantexpr is dead, remove it.

This involves recursively eliminating any dead users of the constantexpr.

Definition at line 460 of file Constants.cpp.

References C, llvm::Constant::destroyConstant(), llvm::dyn_cast(), llvm::Value::use_empty(), and llvm::Value::user_back().

Referenced by llvm::Constant::removeDeadConstantUsers().

◆ TypeToFloatSemantics()

static const fltSemantics* TypeToFloatSemantics ( Type Ty)
static