Fix layering violation: Analysis should not include headers from Transforms
[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 namespace llvm {
24
25 class FunctionPass;
26 class Module;
27 class Function;
28
29 /// @brief Create a lint pass.
30 ///
31 /// Check a module or function.
32 FunctionPass *createLintPass();
33
34 /// @brief Check a module.
35 ///
36 /// This should only be used for debugging, because it plays games with
37 /// PassManagers and stuff.
38 void lintModule(
39   const Module &M    ///< The module to be checked
40 );
41
42 // lintFunction - Check a function.
43 void lintFunction(
44   const Function &F  ///< The function to be checked
45 );
46
47 } // End llvm namespace
48
49 #endif