Taints the non-acquire RMW's store address with the load part
[oota-llvm.git] / include / llvm / DebugInfo / Symbolize / DIPrinter.h
1 //===- llvm/DebugInfo/Symbolize/DIPrinter.h ---------------------*- 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 declares the DIPrinter class, which is responsible for printing
11 // structures defined in DebugInfo/DIContext.h
12 //
13 //===----------------------------------------------------------------------===//
14
15 #ifndef LLVM_DEBUGINFO_SYMBOLIZE_DIPRINTER_H
16 #define LLVM_DEBUGINFO_SYMBOLIZE_DIPRINTER_H
17
18 #include "llvm/Support/raw_ostream.h"
19
20 namespace llvm {
21 struct DILineInfo;
22 class DIInliningInfo;
23 struct DIGlobal;
24
25 namespace symbolize {
26
27 class DIPrinter {
28   raw_ostream &OS;
29   bool PrintFunctionNames;
30   bool PrintPretty;
31   int PrintSourceContext;
32
33   void print(const DILineInfo &Info, bool Inlined);
34   void printContext(std::string FileName, int64_t Line);
35
36 public:
37   DIPrinter(raw_ostream &OS, bool PrintFunctionNames = true,
38             bool PrintPretty = false, int PrintSourceContext = 0)
39       : OS(OS), PrintFunctionNames(PrintFunctionNames),
40         PrintPretty(PrintPretty), PrintSourceContext(PrintSourceContext) {}
41
42   DIPrinter &operator<<(const DILineInfo &Info);
43   DIPrinter &operator<<(const DIInliningInfo &Info);
44   DIPrinter &operator<<(const DIGlobal &Global);
45 };
46 }
47 }
48
49 #endif
50