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 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. emitFunctionAnnot(const Function *,formatted_raw_ostream &)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. emitBasicBlockStartAnnot(const BasicBlock *,formatted_raw_ostream &)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. emitBasicBlockEndAnnot(const BasicBlock *,formatted_raw_ostream &)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. emitInstructionAnnot(const Instruction *,formatted_raw_ostream &)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. printInfoComment(const Value &,formatted_raw_ostream &)57 virtual void printInfoComment(const Value &, formatted_raw_ostream &) {} 58 }; 59 60 } // End llvm namespace 61 62 #endif 63