1//===- MIRPrinter.h - MIR serialization format printer ----------*- 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// This file declares the functions that print out the LLVM IR and the machine 10// functions using the MIR serialization format. 11// 12//===----------------------------------------------------------------------===// 13 14#ifndef LLVM_LIB_CODEGEN_MIRPRINTER_H 15#define LLVM_LIB_CODEGEN_MIRPRINTER_H 16 17namespace llvm { 18 19class MachineBasicBlock; 20class MachineFunction; 21class Module; 22class raw_ostream; 23template <typename T> class SmallVectorImpl; 24 25/// Print LLVM IR using the MIR serialization format to the given output stream. 26void printMIR(raw_ostream &OS, const Module &M); 27 28/// Print a machine function using the MIR serialization format to the given 29/// output stream. 30void printMIR(raw_ostream &OS, const MachineFunction &MF); 31 32/// Determine a possible list of successors of a basic block based on the 33/// basic block machine operand being used inside the block. This should give 34/// you the correct list of successor blocks in most cases except for things 35/// like jump tables where the basic block references can't easily be found. 36/// The MIRPRinter will skip printing successors if they match the result of 37/// this funciton and the parser will use this function to construct a list if 38/// it is missing. 39void guessSuccessors(const MachineBasicBlock &MBB, 40 SmallVectorImpl<MachineBasicBlock*> &Result, 41 bool &IsFallthrough); 42 43} // end namespace llvm 44 45#endif 46