]>
Commit | Line | Data |
---|---|---|
1a4d82fc JJ |
1 | //===- IRPrintingPasses.h - Passes to print out IR constructs ---*- 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 | /// \file | |
10 | /// | |
11 | /// This file defines passes to print out IR in various granularities. The | |
12 | /// PrintModulePass pass simply prints out the entire module when it is | |
13 | /// executed. The PrintFunctionPass class is designed to be pipelined with | |
14 | /// other FunctionPass's, and prints out the functions of the module as they | |
15 | /// are processed. | |
16 | /// | |
17 | //===----------------------------------------------------------------------===// | |
18 | ||
19 | #ifndef LLVM_IR_IRPRINTINGPASSES_H | |
20 | #define LLVM_IR_IRPRINTINGPASSES_H | |
21 | ||
22 | #include "llvm/ADT/StringRef.h" | |
23 | #include <string> | |
24 | ||
25 | namespace llvm { | |
26 | class BasicBlockPass; | |
27 | class Function; | |
28 | class FunctionPass; | |
29 | class Module; | |
30 | class ModulePass; | |
31 | class PreservedAnalyses; | |
32 | class raw_ostream; | |
33 | ||
34 | /// \brief Create and return a pass that writes the module to the specified | |
35 | /// \c raw_ostream. | |
36 | ModulePass *createPrintModulePass(raw_ostream &OS, | |
37 | const std::string &Banner = ""); | |
38 | ||
39 | /// \brief Create and return a pass that prints functions to the specified | |
40 | /// \c raw_ostream as they are processed. | |
41 | FunctionPass *createPrintFunctionPass(raw_ostream &OS, | |
42 | const std::string &Banner = ""); | |
43 | ||
44 | /// \brief Create and return a pass that writes the BB to the specified | |
45 | /// \c raw_ostream. | |
46 | BasicBlockPass *createPrintBasicBlockPass(raw_ostream &OS, | |
47 | const std::string &Banner = ""); | |
48 | ||
49 | /// \brief Pass for printing a Module as LLVM's text IR assembly. | |
50 | /// | |
51 | /// Note: This pass is for use with the new pass manager. Use the create...Pass | |
52 | /// functions above to create passes for use with the legacy pass manager. | |
53 | class PrintModulePass { | |
54 | raw_ostream &OS; | |
55 | std::string Banner; | |
56 | ||
57 | public: | |
58 | PrintModulePass(); | |
59 | PrintModulePass(raw_ostream &OS, const std::string &Banner = ""); | |
60 | ||
85aaf69f | 61 | PreservedAnalyses run(Module &M); |
1a4d82fc JJ |
62 | |
63 | static StringRef name() { return "PrintModulePass"; } | |
64 | }; | |
65 | ||
66 | /// \brief Pass for printing a Function as LLVM's text IR assembly. | |
67 | /// | |
68 | /// Note: This pass is for use with the new pass manager. Use the create...Pass | |
69 | /// functions above to create passes for use with the legacy pass manager. | |
70 | class PrintFunctionPass { | |
71 | raw_ostream &OS; | |
72 | std::string Banner; | |
73 | ||
74 | public: | |
75 | PrintFunctionPass(); | |
76 | PrintFunctionPass(raw_ostream &OS, const std::string &Banner = ""); | |
77 | ||
85aaf69f | 78 | PreservedAnalyses run(Function &F); |
1a4d82fc JJ |
79 | |
80 | static StringRef name() { return "PrintFunctionPass"; } | |
81 | }; | |
82 | ||
83 | } // End llvm namespace | |
84 | ||
85 | #endif |