mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
46d58287e3
- MIParser: If the successor list is not specified successors will be added based on basic block operands in the block and possible fallthrough. - MIRPrinter: Adds a new `simplify-mir` option, with that option set: Skip printing of block successor lists in cases where the parser is guaranteed to reconstruct it. This means we still print the list if some successor cannot be determined (happens for example for jump tables), if the successor order changes or branch probabilities being unequal. Differential Revision: https://reviews.llvm.org/D31262 llvm-svn: 302289
47 lines
1.7 KiB
C++
47 lines
1.7 KiB
C++
//===- MIRPrinter.h - MIR serialization format printer --------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file declares the functions that print out the LLVM IR and the machine
|
|
// functions using the MIR serialization format.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_LIB_CODEGEN_MIRPRINTER_H
|
|
#define LLVM_LIB_CODEGEN_MIRPRINTER_H
|
|
|
|
namespace llvm {
|
|
|
|
class MachineBasicBlock;
|
|
class MachineFunction;
|
|
class Module;
|
|
class raw_ostream;
|
|
template <typename T> class SmallVectorImpl;
|
|
|
|
/// Print LLVM IR using the MIR serialization format to the given output stream.
|
|
void printMIR(raw_ostream &OS, const Module &M);
|
|
|
|
/// Print a machine function using the MIR serialization format to the given
|
|
/// output stream.
|
|
void printMIR(raw_ostream &OS, const MachineFunction &MF);
|
|
|
|
/// Determine a possible list of successors of a basic block based on the
|
|
/// basic block machine operand being used inside the block. This should give
|
|
/// you the correct list of successor blocks in most cases except for things
|
|
/// like jump tables where the basic block references can't easily be found.
|
|
/// The MIRPRinter will skip printing successors if they match the result of
|
|
/// this funciton and the parser will use this function to construct a list if
|
|
/// it is missing.
|
|
void guessSuccessors(const MachineBasicBlock &MBB,
|
|
SmallVectorImpl<MachineBasicBlock*> &Successors,
|
|
bool &IsFallthrough);
|
|
|
|
} // end namespace llvm
|
|
|
|
#endif
|