1 //===- MachineSSAContext.cpp ------------------------------------*- C++ -*-===//
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
7 //===----------------------------------------------------------------------===//
10 /// This file defines a specialization of the GenericSSAContext<X>
11 /// template class for Machine IR.
13 //===----------------------------------------------------------------------===//
15 #include "llvm/CodeGen/MachineSSAContext.h"
16 #include "llvm/CodeGen/MachineBasicBlock.h"
17 #include "llvm/CodeGen/MachineInstr.h"
18 #include "llvm/Support/raw_ostream.h"
22 MachineBasicBlock
*MachineSSAContext::getEntryBlock(MachineFunction
&F
) {
26 void MachineSSAContext::setFunction(MachineFunction
&Fn
) {
28 RegInfo
= &MF
->getRegInfo();
31 Printable
MachineSSAContext::print(MachineBasicBlock
*Block
) const {
32 return Printable([Block
](raw_ostream
&Out
) { Block
->printName(Out
); });
35 Printable
MachineSSAContext::print(MachineInstr
*I
) const {
36 return Printable([I
](raw_ostream
&Out
) { I
->print(Out
); });
39 Printable
MachineSSAContext::print(Register Value
) const {
41 return Printable([MRI
, Value
](raw_ostream
&Out
) {
42 Out
<< printReg(Value
, MRI
->getTargetRegisterInfo(), 0, MRI
);
45 // Try to print the definition.
46 if (auto *Instr
= MRI
->getUniqueVRegDef(Value
)) {