Line data Source code
1 : //===-- AssemblyAnnotationWriter.h - Annotation .ll files -------*- 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 : // Clients of the assembly writer can use this interface to add their own
11 : // special-purpose annotations to LLVM assembly language printouts. Note that
12 : // the assembly parser won't be able to parse these, in general, so
13 : // implementations are advised to print stuff as LLVM comments.
14 : //
15 : //===----------------------------------------------------------------------===//
16 :
17 : #ifndef LLVM_IR_ASSEMBLYANNOTATIONWRITER_H
18 : #define LLVM_IR_ASSEMBLYANNOTATIONWRITER_H
19 :
20 : namespace llvm {
21 :
22 : class Function;
23 : class BasicBlock;
24 : class Instruction;
25 : class Value;
26 : class formatted_raw_ostream;
27 :
28 135 : class AssemblyAnnotationWriter {
29 : public:
30 : virtual ~AssemblyAnnotationWriter();
31 :
32 : /// emitFunctionAnnot - This may be implemented to emit a string right before
33 : /// the start of a function.
34 134 : virtual void emitFunctionAnnot(const Function *,
35 134 : formatted_raw_ostream &) {}
36 :
37 : /// emitBasicBlockStartAnnot - This may be implemented to emit a string right
38 : /// after the basic block label, but before the first instruction in the
39 : /// block.
40 43 : virtual void emitBasicBlockStartAnnot(const BasicBlock *,
41 : formatted_raw_ostream &) {
42 43 : }
43 :
44 : /// emitBasicBlockEndAnnot - This may be implemented to emit a string right
45 : /// after the basic block.
46 426 : virtual void emitBasicBlockEndAnnot(const BasicBlock *,
47 : formatted_raw_ostream &) {
48 426 : }
49 :
50 : /// emitInstructionAnnot - This may be implemented to emit a string right
51 : /// before an instruction is emitted.
52 82 : virtual void emitInstructionAnnot(const Instruction *,
53 82 : formatted_raw_ostream &) {}
54 :
55 : /// printInfoComment - This may be implemented to emit a comment to the
56 : /// right of an instruction or global value.
57 1200 : virtual void printInfoComment(const Value &, formatted_raw_ostream &) {}
58 : };
59 :
60 : } // End llvm namespace
61 :
62 : #endif
|