#include "DifferenceEngine.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringSet.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/CFG.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Support/type_traits.h"
#include <utility>
usingnamespacellvm;
namespace {
template <class T, class Sorter, unsigned InlineCapacity>
class PriorityQueue { … };
class FunctionDifferenceEngine { … };
struct DiffEntry { … };
bool FunctionDifferenceEngine::matchForBlockDiff(const Instruction *L,
const Instruction *R) { … }
void FunctionDifferenceEngine::runBlockDiff(BasicBlock::const_iterator LStart,
BasicBlock::const_iterator RStart) { … }
}
void DifferenceEngine::Oracle::anchor() { … }
void DifferenceEngine::diff(const Function *L, const Function *R) { … }
void DifferenceEngine::diff(const Module *L, const Module *R) { … }
bool DifferenceEngine::equivalentAsOperands(const GlobalValue *L,
const GlobalValue *R) { … }