LLVM  14.0.0git
MIRPrinter.h
Go to the documentation of this file.
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_CODEGEN_MIRPRINTER_H
15 #define LLVM_CODEGEN_MIRPRINTER_H
16 
17 namespace llvm {
18 
19 class MachineBasicBlock;
20 class MachineFunction;
21 class Module;
22 class raw_ostream;
23 template <typename T> class SmallVectorImpl;
24 
25 /// Print LLVM IR using the MIR serialization format to the given output stream.
26 void printMIR(raw_ostream &OS, const Module &M);
27 
28 /// Print a machine function using the MIR serialization format to the given
29 /// output stream.
30 void 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.
39 void guessSuccessors(const MachineBasicBlock &MBB,
40  SmallVectorImpl<MachineBasicBlock*> &Result,
41  bool &IsFallthrough);
42 
43 } // end namespace llvm
44 
45 #endif
llvm
---------------------— PointerInfo ------------------------------------—
Definition: AllocatorList.h:23
M
We currently emits eax Perhaps this is what we really should generate is Is imull three or four cycles eax eax The current instruction priority is based on pattern complexity The former is more complex because it folds a load so the latter will not be emitted Perhaps we should use AddedComplexity to give LEA32r a higher priority We should always try to match LEA first since the LEA matching code does some estimate to determine whether the match is profitable if we care more about code then imull is better It s two bytes shorter than movl leal On a Pentium M
Definition: README.txt:252
llvm::guessSuccessors
void guessSuccessors(const MachineBasicBlock &MBB, SmallVectorImpl< MachineBasicBlock * > &Result, bool &IsFallthrough)
Determine a possible list of successors of a basic block based on the basic block machine operand bei...
Definition: MIRPrinter.cpp:601
llvm::printMIR
void printMIR(raw_ostream &OS, const Module &M)
Print LLVM IR using the MIR serialization format to the given output stream.
Definition: MIRPrinter.cpp:944
Module
Machine Check Debug Module
Definition: MachineCheckDebugify.cpp:122
MBB
MachineBasicBlock & MBB
Definition: AArch64SLSHardening.cpp:74