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_ASMANNOTATIONWRITER_H 18#define LLVM_IR_ASMANNOTATIONWRITER_H 19 20namespace llvm { 21 22class Function; 23class BasicBlock; 24class Instruction; 25class Value; 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 *, 36 formatted_raw_ostream &) {} 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 *, 42 formatted_raw_ostream &) { 43 } 44 45 /// emitBasicBlockEndAnnot - This may be implemented to emit a string right 46 /// after the basic block. 47 virtual void emitBasicBlockEndAnnot(const BasicBlock *, 48 formatted_raw_ostream &) { 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 *, 54 formatted_raw_ostream &) {} 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 &, formatted_raw_ostream &) {} 59}; 60 61} // End llvm namespace 62 63#endif 64