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