mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-27 13:40:43 +00:00
[CodeGen] Print MCSymbol operands as <mcsymbol sym> in both MIR and debug output
Work towards the unification of MIR and debug output by printing `<mcsymbol sym>` instead of `<MCSym=sym>`. Only debug syntax is affected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320685 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f726becf7c
commit
ee30ab7184
@ -121,6 +121,8 @@ Tests are more accessible and future proof when simplified:
|
||||
contains dummy functions (see above). The .mir loader will create the
|
||||
IR functions automatically in this case.
|
||||
|
||||
.. _limitations:
|
||||
|
||||
Limitations
|
||||
-----------
|
||||
|
||||
@ -678,6 +680,17 @@ Example:
|
||||
|
||||
CALL64pcrel32 $__stack_chk_fail, csr_64, implicit %rsp, implicit-def %rsp
|
||||
|
||||
MCSymbol Operands
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
A MCSymbol operand is holding a pointer to a ``MCSymbol``. For the limitations
|
||||
of this operand in MIR, see :ref:`limitations <limitations>`.
|
||||
|
||||
The syntax is:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
EH_LABEL <mcsymbol Ltmp1>
|
||||
|
||||
.. TODO: Describe the parsers default behaviour when optional YAML attributes
|
||||
are missing.
|
||||
|
@ -799,7 +799,8 @@ void MIPrinter::print(const MachineInstr &MI, unsigned OpIdx,
|
||||
case MachineOperand::MO_ExternalSymbol:
|
||||
case MachineOperand::MO_GlobalAddress:
|
||||
case MachineOperand::MO_RegisterLiveOut:
|
||||
case MachineOperand::MO_Metadata: {
|
||||
case MachineOperand::MO_Metadata:
|
||||
case MachineOperand::MO_MCSymbol: {
|
||||
unsigned TiedOperandIdx = 0;
|
||||
if (ShouldPrintRegisterTies && Op.isReg() && Op.isTied() && !Op.isDef())
|
||||
TiedOperandIdx = Op.getParent()->findTiedOperandIdx(OpIdx);
|
||||
@ -831,9 +832,6 @@ void MIPrinter::print(const MachineInstr &MI, unsigned OpIdx,
|
||||
printCustomRegMask(Op.getRegMask(), OS, TRI);
|
||||
break;
|
||||
}
|
||||
case MachineOperand::MO_MCSymbol:
|
||||
OS << "<mcsymbol " << *Op.getMCSymbol() << ">";
|
||||
break;
|
||||
case MachineOperand::MO_CFIIndex: {
|
||||
const MachineFunction &MF = *Op.getParent()->getMF();
|
||||
print(MF.getFrameInstructions()[Op.getCFIIndex()], TRI);
|
||||
|
@ -660,7 +660,7 @@ void MachineOperand::print(raw_ostream &OS, ModuleSlotTracker &MST,
|
||||
getMetadata()->printAsOperand(OS, MST);
|
||||
break;
|
||||
case MachineOperand::MO_MCSymbol:
|
||||
OS << "<MCSym=" << *getMCSymbol() << '>';
|
||||
OS << "<mcsymbol " << *getMCSymbol() << ">";
|
||||
break;
|
||||
case MachineOperand::MO_CFIIndex:
|
||||
OS << "<call frame instruction>";
|
||||
|
@ -13,6 +13,8 @@
|
||||
#include "llvm/IR/LLVMContext.h"
|
||||
#include "llvm/IR/Module.h"
|
||||
#include "llvm/IR/ModuleSlotTracker.h"
|
||||
#include "llvm/MC/MCContext.h"
|
||||
#include "llvm/MC/MCAsmInfo.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
@ -314,4 +316,24 @@ TEST(MachineOperandTest, PrintMetadata) {
|
||||
ASSERT_TRUE(OS.str() == "!0");
|
||||
}
|
||||
|
||||
TEST(MachineOperandTest, PrintMCSymbol) {
|
||||
MCAsmInfo MAI;
|
||||
MCContext Ctx(&MAI, /*MRI=*/nullptr, /*MOFI=*/nullptr);
|
||||
MCSymbol *Sym = Ctx.getOrCreateSymbol("foo");
|
||||
|
||||
// Create a MachineOperand with a metadata and print it.
|
||||
MachineOperand MO = MachineOperand::CreateMCSymbol(Sym);
|
||||
|
||||
// Checking some preconditions on the newly created
|
||||
// MachineOperand.
|
||||
ASSERT_TRUE(MO.isMCSymbol());
|
||||
ASSERT_TRUE(MO.getMCSymbol() == Sym);
|
||||
|
||||
std::string str;
|
||||
// Print a MachineOperand containing a metadata node.
|
||||
raw_string_ostream OS(str);
|
||||
MO.print(OS, /*TRI=*/nullptr, /*IntrinsicInfo=*/nullptr);
|
||||
ASSERT_TRUE(OS.str() == "<mcsymbol foo>");
|
||||
}
|
||||
|
||||
} // end namespace
|
||||
|
Loading…
Reference in New Issue
Block a user