2002-08-30 22:27:48 +02:00
|
|
|
//===- llvm/Analysis/LoadValueNumbering.h - Value # Load Insts --*- C++ -*-===//
|
2005-04-21 22:19:05 +02:00
|
|
|
//
|
2003-10-20 22:19:47 +02:00
|
|
|
// The LLVM Compiler Infrastructure
|
|
|
|
//
|
|
|
|
// This file was developed by the LLVM research group and is distributed under
|
|
|
|
// the University of Illinois Open Source License. See LICENSE.TXT for details.
|
2005-04-21 22:19:05 +02:00
|
|
|
//
|
2003-10-20 22:19:47 +02:00
|
|
|
//===----------------------------------------------------------------------===//
|
2002-08-30 22:27:48 +02:00
|
|
|
//
|
|
|
|
// This file defines a value numbering pass that value #'s load instructions.
|
|
|
|
// To do this, it finds lexically identical load instructions, and uses alias
|
|
|
|
// analysis to determine which loads are guaranteed to produce the same value.
|
|
|
|
//
|
|
|
|
// This pass builds off of another value numbering pass to implement value
|
|
|
|
// numbering for non-load instructions. It uses Alias Analysis so that it can
|
|
|
|
// disambiguate the load instructions. The more powerful these base analyses
|
|
|
|
// are, the more powerful the resultant analysis will be.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
|
|
|
#ifndef LLVM_ANALYSIS_LOAD_VALUE_NUMBERING_H
|
|
|
|
#define LLVM_ANALYSIS_LOAD_VALUE_NUMBERING_H
|
|
|
|
|
2003-11-11 23:41:34 +01:00
|
|
|
namespace llvm {
|
|
|
|
|
2004-07-27 19:43:21 +02:00
|
|
|
class FunctionPass;
|
2002-08-30 22:27:48 +02:00
|
|
|
|
|
|
|
/// createLoadValueNumberingPass - Create and return a new pass that implements
|
|
|
|
/// the ValueNumbering interface.
|
|
|
|
///
|
2004-07-27 19:43:21 +02:00
|
|
|
FunctionPass *createLoadValueNumberingPass();
|
2002-08-30 22:27:48 +02:00
|
|
|
|
2003-11-11 23:41:34 +01:00
|
|
|
} // End llvm namespace
|
|
|
|
|
2002-08-30 22:27:48 +02:00
|
|
|
#endif
|