LLVM  8.0.0svn
Classes | Namespaces | Macros | Enumerations | Functions
InstCombineInternal.h File Reference

This file provides internal interfaces used to implement the InstCombine. More...

#include "llvm/ADT/ArrayRef.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/InstructionSimplify.h"
#include "llvm/Analysis/TargetFolder.h"
#include "llvm/Transforms/Utils/Local.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/IR/Argument.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/InstVisitor.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/Use.h"
#include "llvm/IR/Value.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/KnownBits.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/InstCombine/InstCombineWorklist.h"
#include <cassert>
#include <cstdint>
Include dependency graph for InstCombineInternal.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  llvm::InstCombiner
 The core instruction combiner logic. More...
 

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 

Macros

#define DEBUG_TYPE   "instcombine"
 

Enumerations

enum  llvm::OverflowCheckFlavor {
  llvm::OCF_UNSIGNED_ADD, llvm::OCF_SIGNED_ADD, llvm::OCF_UNSIGNED_SUB, llvm::OCF_SIGNED_SUB,
  llvm::OCF_UNSIGNED_MUL, llvm::OCF_SIGNED_MUL, llvm::OCF_INVALID
}
 Specific patterns of overflow check idioms that we match. More...
 

Functions

static unsigned llvm::getComplexity (Value *V)
 Assign a complexity or rank value to LLVM Values. More...
 
static bool llvm::isCanonicalPredicate (CmpInst::Predicate Pred)
 Predicate canonicalization reduces the number of patterns that need to be matched by other transforms. More...
 
static Value * llvm::peekThroughBitcast (Value *V, bool OneUseOnly=false)
 Return the source operand of a potentially bitcasted value while optionally checking if it has one use. More...
 
static Constant * llvm::AddOne (Constant *C)
 Add one to a Constant. More...
 
static Constant * llvm::SubOne (Constant *C)
 Subtract one from a Constant. More...
 
static bool llvm::IsFreeToInvert (Value *V, bool WillInvertAllUses)
 Return true if the specified value is free to invert (apply ~ to). More...
 
static OverflowCheckFlavor llvm::IntrinsicIDToOverflowCheckFlavor (unsigned ID)
 Returns the OverflowCheckFlavor corresponding to a overflow_with_op intrinsic. More...
 
static Constant * llvm::getSafeVectorConstantForBinop (BinaryOperator::BinaryOps Opcode, Constant *In, bool IsRHSConstant)
 Some binary operators require special handling to avoid poison and undefined behavior. More...
 

Detailed Description

This file provides internal interfaces used to implement the InstCombine.

Definition in file InstCombineInternal.h.

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "instcombine"

Definition at line 47 of file InstCombineInternal.h.