blob: 6e1f5c43e12ee9e2e966e1cdfa61383322c835c2 [file] [log] [blame]
Andrew Scull5e1ddfa2018-08-14 10:06:54 +01001//===-- 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
20namespace llvm {
21
22class Function;
23class BasicBlock;
24class Instruction;
25class Value;
26class formatted_raw_ostream;
27
28class AssemblyAnnotationWriter {
29public:
30 virtual ~AssemblyAnnotationWriter();
31
32 /// emitFunctionAnnot - This may be implemented to emit a string right before
33 /// the start of a function.
34 virtual void emitFunctionAnnot(const Function *,
35 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 virtual void emitBasicBlockStartAnnot(const BasicBlock *,
41 formatted_raw_ostream &) {
42 }
43
44 /// emitBasicBlockEndAnnot - This may be implemented to emit a string right
45 /// after the basic block.
46 virtual void emitBasicBlockEndAnnot(const BasicBlock *,
47 formatted_raw_ostream &) {
48 }
49
50 /// emitInstructionAnnot - This may be implemented to emit a string right
51 /// before an instruction is emitted.
52 virtual void emitInstructionAnnot(const Instruction *,
53 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 virtual void printInfoComment(const Value &, formatted_raw_ostream &) {}
58};
59
60} // End llvm namespace
61
62#endif