blob: 3a65f97a5b507e7717ddb7d3b2bd9153b7314491 [file] [log] [blame]
John Bauman19bac1e2014-05-06 15:23:49 -04001//===-- 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_ASSEMBLY_ASMANNOTATIONWRITER_H
18#define LLVM_ASSEMBLY_ASMANNOTATIONWRITER_H
19
20namespace llvm {
21
22class Function;
23class BasicBlock;
24class Instruction;
25class raw_ostream;
26class formatted_raw_ostream;
27
28class AssemblyAnnotationWriter {
29public:
30
31 virtual ~AssemblyAnnotationWriter();
32
33 /// emitFunctionAnnot - This may be implemented to emit a string right before
34 /// the start of a function.
35 virtual void emitFunctionAnnot(const Function *F,
36 formatted_raw_ostream &OS) {}
37
38 /// emitBasicBlockStartAnnot - This may be implemented to emit a string right
39 /// after the basic block label, but before the first instruction in the
40 /// block.
41 virtual void emitBasicBlockStartAnnot(const BasicBlock *BB,
42 formatted_raw_ostream &OS) {
43 }
44
45 /// emitBasicBlockEndAnnot - This may be implemented to emit a string right
46 /// after the basic block.
47 virtual void emitBasicBlockEndAnnot(const BasicBlock *BB,
48 formatted_raw_ostream &OS) {
49 }
50
51 /// emitInstructionAnnot - This may be implemented to emit a string right
52 /// before an instruction is emitted.
53 virtual void emitInstructionAnnot(const Instruction *I,
54 formatted_raw_ostream &OS) {}
55
56 /// printInfoComment - This may be implemented to emit a comment to the
57 /// right of an instruction or global value.
58 virtual void printInfoComment(const Value &V, formatted_raw_ostream &OS) {}
59};
60
61} // End llvm namespace
62
63#endif