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 19namespace llvm { 20 21class Function; 22class BasicBlock; 23class Instruction; 24class Value; 25class formatted_raw_ostream; 26 27class AssemblyAnnotationWriter { 28public: 29 virtual ~AssemblyAnnotationWriter(); 30 31 /// emitFunctionAnnot - This may be implemented to emit a string right before 32 /// the start of a function. 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. 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. 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. 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. 56 virtual void printInfoComment(const Value &, formatted_raw_ostream &) {} 57}; 58 59} // End llvm namespace 60 61#endif 62