[llvm-commits] CVS: llvm/include/llvm/Analysis/ConstantFolding.h
Chris Lattner
sabre at nondot.org
Tue Jan 30 15:47:51 PST 2007
Changes in directory llvm/include/llvm/Analysis:
ConstantFolding.h updated: 1.2 -> 1.3
---
Log message:
Make this a *real* header:
1. Remove using namespace llvm;
2. Remove unneeded #includes.
3. Add #include guard.
Also add prototypes for new code moved from transformutils to libanalysis.
---
Diffs of the changes: (+34 -3)
ConstantFolding.h | 37 ++++++++++++++++++++++++++++++++++---
1 files changed, 34 insertions(+), 3 deletions(-)
Index: llvm/include/llvm/Analysis/ConstantFolding.h
diff -u llvm/include/llvm/Analysis/ConstantFolding.h:1.2 llvm/include/llvm/Analysis/ConstantFolding.h:1.3
--- llvm/include/llvm/Analysis/ConstantFolding.h:1.2 Tue Jan 30 17:12:47 2007
+++ llvm/include/llvm/Analysis/ConstantFolding.h Tue Jan 30 17:47:35 2007
@@ -12,12 +12,42 @@
//
//===----------------------------------------------------------------------===//
-#include "llvm/Constants.h"
-#include "llvm/Function.h"
-using namespace llvm;
+#ifndef LLVM_ANALYSIS_CONSTANTFOLDING_H
+#define LLVM_ANALYSIS_CONSTANTFOLDING_H
namespace llvm {
+ class Constant;
+ class ConstantExpr;
+ class Instruction;
+ class TargetData;
+ class Function;
+/// ConstantFoldInstruction - Attempt to constant fold the specified
+/// instruction. If successful, the constant result is returned, if not, null
+/// is returned. Note that this function can only fail when attempting to fold
+/// instructions like loads and stores, which have no constant expression form.
+///
+Constant *ConstantFoldInstruction(Instruction *I, const TargetData *TD = 0);
+
+/// ConstantFoldInstOperands - Attempt to constant fold an instruction with the
+/// specified operands. If successful, the constant result is returned, if not,
+/// null is returned. Note that this function can fail when attempting to
+/// fold instructions like loads and stores, which have no constant expression
+/// form.
+///
+Constant *ConstantFoldInstOperands(
+ const Instruction *I, ///< The model instruction
+ Constant** Ops, ///< The array of constant operands to use.
+ unsigned NumOps, ///< The number of operands provided.
+ const TargetData *TD = 0 ///< Optional target information.
+);
+
+
+/// ConstantFoldLoadThroughGEPConstantExpr - Given a constant and a
+/// getelementptr constantexpr, return the constant value being addressed by the
+/// constant expression, or null if something is funny and we can't decide.
+Constant *ConstantFoldLoadThroughGEPConstantExpr(Constant *C, ConstantExpr *CE);
+
/// canConstantFoldCallTo - Return true if its even possible to fold a call to
/// the specified function.
bool canConstantFoldCallTo(Function *F);
@@ -28,3 +58,4 @@
ConstantFoldCall(Function *F, Constant** Operands, unsigned NumOperands);
}
+#endif
More information about the llvm-commits
mailing list