aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/Analysis/Passes.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-05-07 19:53:05 +0000
committerChris Lattner <sabre@nondot.org>2008-05-07 19:53:05 +0000
commit029840c93521f5c54380e037a66216c8227ad1e1 (patch)
tree19016011207ded1f270b0dd4053cbdd161990d3e /include/llvm/Analysis/Passes.h
parentfdedd5397dcbec32a4591feca9a3f6a0eba60492 (diff)
downloadexternal_llvm-029840c93521f5c54380e037a66216c8227ad1e1.tar.gz
external_llvm-029840c93521f5c54380e037a66216c8227ad1e1.tar.bz2
external_llvm-029840c93521f5c54380e037a66216c8227ad1e1.zip
Add a new LibCallAliasAnalysis pass, which is parameterized
by an instance of LibCallInfo to provide mod/ref info of standard library functions. This is powerful enough to say that 'sqrt' is readonly except that it modifies errno, or that "printf doesn't store to memory unless the %n constraint is present" etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50827 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Analysis/Passes.h')
-rw-r--r--include/llvm/Analysis/Passes.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/llvm/Analysis/Passes.h b/include/llvm/Analysis/Passes.h
index cf52831bac..7843aea2ae 100644
--- a/include/llvm/Analysis/Passes.h
+++ b/include/llvm/Analysis/Passes.h
@@ -20,6 +20,7 @@ namespace llvm {
class ImmutablePass;
class ModulePass;
class Pass;
+ class LibCallInfo;
//===--------------------------------------------------------------------===//
//
@@ -63,6 +64,14 @@ namespace llvm {
//===--------------------------------------------------------------------===//
//
+ /// createLibCallAliasAnalysisPass - Create an alias analysis pass that knows
+ /// about the semantics of a set of libcalls specified by LCI. The newly
+ /// constructed pass takes ownership of the pointer that is provided.
+ ///
+ FunctionPass *createLibCallAliasAnalysisPass(LibCallInfo *LCI);
+
+ //===--------------------------------------------------------------------===//
+ //
// createAndersensPass - This pass implements Andersen's interprocedural alias
// analysis.
//