1 //===-- AssemblyAnnotationWriter.h - Annotation .ll files -------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // Clients of the assembly writer can use this interface to add their own 10 // special-purpose annotations to LLVM assembly language printouts. Note that 11 // the assembly parser won't be able to parse these, in general, so 12 // implementations are advised to print stuff as LLVM comments. 13 // 14 //===----------------------------------------------------------------------===// 15 16 #ifndef LLVM_IR_ASSEMBLYANNOTATIONWRITER_H 17 #define LLVM_IR_ASSEMBLYANNOTATIONWRITER_H 18 19 namespace llvm { 20 21 class Function; 22 class BasicBlock; 23 class Instruction; 24 class Value; 25 class formatted_raw_ostream; 26 27 class AssemblyAnnotationWriter { 28 public: 29 virtual ~AssemblyAnnotationWriter(); 30 31 /// emitFunctionAnnot - This may be implemented to emit a string right before 32 /// the start of a function. emitFunctionAnnot(const Function *,formatted_raw_ostream &)33 virtual void emitFunctionAnnot(const Function *, 34 formatted_raw_ostream &) {} 35 36 /// emitBasicBlockStartAnnot - This may be implemented to emit a string right 37 /// after the basic block label, but before the first instruction in the 38 /// block. emitBasicBlockStartAnnot(const BasicBlock *,formatted_raw_ostream &)39 virtual void emitBasicBlockStartAnnot(const BasicBlock *, 40 formatted_raw_ostream &) { 41 } 42 43 /// emitBasicBlockEndAnnot - This may be implemented to emit a string right 44 /// after the basic block. emitBasicBlockEndAnnot(const BasicBlock *,formatted_raw_ostream &)45 virtual void emitBasicBlockEndAnnot(const BasicBlock *, 46 formatted_raw_ostream &) { 47 } 48 49 /// emitInstructionAnnot - This may be implemented to emit a string right 50 /// before an instruction is emitted. emitInstructionAnnot(const Instruction *,formatted_raw_ostream &)51 virtual void emitInstructionAnnot(const Instruction *, 52 formatted_raw_ostream &) {} 53 54 /// printInfoComment - This may be implemented to emit a comment to the 55 /// right of an instruction or global value. printInfoComment(const Value &,formatted_raw_ostream &)56 virtual void printInfoComment(const Value &, formatted_raw_ostream &) {} 57 }; 58 59 } // End llvm namespace 60 61 #endif 62