Index: include/llvm/Bitcode/NaCl/NaClBitcodeAnalyzer.h |
diff --git a/include/llvm/Bitcode/NaCl/NaClBitcodeAnalyzer.h b/include/llvm/Bitcode/NaCl/NaClBitcodeAnalyzer.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d93f7aa4071125192470fe5309d921c97b3f2ec9 |
--- /dev/null |
+++ b/include/llvm/Bitcode/NaCl/NaClBitcodeAnalyzer.h |
@@ -0,0 +1,66 @@ |
+//===-- NaClBitcodeAnalyzer.h - Bitcode Analyzer --------------------------===// |
+// |
+// The LLVM Compiler Infrastructure |
+// |
+// This file is distributed under the University of Illinois Open Source |
+// License. See LICENSE.TXT for details. |
+// |
+// Analytical information about a bitcode file. Intended as an aid to developers |
+// of bitcode reading and writing software. It produces a summary of the bitcode |
+// file that shows various statistics about the contents of the file. By default |
+// this information is detailed and contains information about individual |
+// bitcode blocks and the functions in the module. The tool is also able to |
+// print a bitcode file in a straight forward text format that shows the |
+// containment and relationships of the information in the bitcode file (-dump |
+// option). |
+// |
+//===----------------------------------------------------------------------===// |
+ |
+#ifndef NACL_BITCODE_ANALYZER_H |
+#define NACL_BITCODE_ANALYZER_H |
+ |
+#include <memory> |
+ |
+namespace llvm { |
+ |
+class MemoryBuffer; |
+class StringRef; |
+class raw_ostream; |
+ |
+// Analysis options. See the command-line documentation in pnacl-bcanalyzer |
+// for a description. |
+struct AnalysisDumpOptions { |
+ AnalysisDumpOptions() |
+ : DumpRecords(false), DumpDetails(false), OpsPerLine(0) |
+ {} |
+ |
+ // When true, dump the records. When false, print out distribution |
+ // statistics. |
+ bool DumpRecords; |
+ |
+ // When true, print out abbreviations, abbreviation ID's, and |
+ // other (non-record specific) details when dumping records. |
+ bool DumpDetails; |
+ |
+ // The number of record operands to be dumped per text line. |
+ unsigned OpsPerLine; |
+ |
+ // When true, prints block statistics based on block ID rather than |
+ // size. When false, prints block statistics base on percentage of |
+ // file. |
+ bool OrderBlocksByID; |
+}; |
+ |
+/// Run analysis on the given file. Output goes to OS. |
+int AnalyzeBitcodeInFile(const StringRef &InputFilename, raw_ostream &OS, |
+ const AnalysisDumpOptions &DumpOptions); |
+ |
+/// Run analysis on a memory buffer with bitcode. Output goes to |
+/// OS. The buffer is owned by the caller. |
+int AnalyzeBitcodeInBuffer(const std::unique_ptr<MemoryBuffer> &Buf, |
+ raw_ostream &OS, |
+ const AnalysisDumpOptions &DumpOptions); |
+ |
+} // namespace llvm |
+ |
+#endif |