Add a -lint pass which checks for common sources of undefined or likely
[oota-llvm.git] / include / llvm / Analysis / Lint.h
1 //===-- llvm/Analysis/Lint.h - LLVM IR Lint ---------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file defines lint interfaces that can be used for some sanity checking
11 // of input to the system, and for checking that transformations
12 // haven't done something bad. In contrast to the Verifier, the Lint checker
13 // checks for undefined behavior or constructions with likely unintended
14 // behavior.
15 //
16 // To see what specifically is checked, look at Lint.cpp
17 //
18 //===----------------------------------------------------------------------===//
19
20 #ifndef LLVM_ANALYSIS_LINT_H
21 #define LLVM_ANALYSIS_LINT_H
22
23 #include <string>
24
25 namespace llvm {
26
27 class FunctionPass;
28 class Module;
29 class Function;
30
31 /// @brief Create a lint pass.
32 ///
33 /// Check a module or function.
34 FunctionPass *createLintPass();
35
36 /// @brief Check a module.
37 ///
38 /// This should only be used for debugging, because it plays games with
39 /// PassManagers and stuff.
40 void lintModule(
41   const Module &M,  ///< The module to be checked
42   std::string *ErrorInfo = 0      ///< Information about failures.
43 );
44
45 // lintFunction - Check a function.
46 void lintFunction(
47   const Function &F  ///< The function to be checked
48 );
49
50 } // End llvm namespace
51
52 #endif