From: Chris Lattner Date: Fri, 30 Aug 2002 20:30:03 +0000 (+0000) Subject: Initial implementation of basic value numbering X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=26d933a84969a18c0841721812c5429d1a9ff032;p=oota-llvm.git Initial implementation of basic value numbering This file will probably go away at some point git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3542 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Analysis/BasicValueNumbering.h b/include/llvm/Analysis/BasicValueNumbering.h new file mode 100644 index 00000000000..66c7d94c1ab --- /dev/null +++ b/include/llvm/Analysis/BasicValueNumbering.h @@ -0,0 +1,37 @@ +//===- llvm/Analysis/BasicValueNumbering.h - Value #'ing Impl ---*- C++ -*-===// +// +// This file defines the default implementation of the Value Numbering +// interface, which uses the SSA value graph to find lexically identical +// expressions. This does not require any computation ahead of time, so it is a +// very fast default implementation. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_ANALYSIS_BASIC_VALUE_NUMBERING_H +#define LLVM_ANALYSIS_BASIC_VALUE_NUMBERING_H + +#include "llvm/Analysis/ValueNumbering.h" +#include "llvm/Pass.h" + +struct BasicValueNumbering : public FunctionPass, public ValueNumbering { + + /// Pass Implementation stuff. This isn't much of a pass. + /// + bool runOnFunction(Function &) { return false; } + + /// getAnalysisUsage - Does not modify anything. + /// + virtual void getAnalysisUsage(AnalysisUsage &AU) const { + AU.setPreservesAll(); + } + + /// getEqualNumberNodes - Return nodes with the same value number as the + /// specified Value. This fills in the argument vector with any equal values. + /// + /// This is where our implementation is. + /// + virtual void getEqualNumberNodes(Value *V1, + std::vector &RetVals) const; +}; + +#endif