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_ASSEMBLY_ASMANNOTATIONWRITER_H 18 #define LLVM_ASSEMBLY_ASMANNOTATIONWRITER_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 class AssemblyAnnotationWriter { 29 public: 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