aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-07-13 21:48:33 +0000
committerChris Lattner <sabre@nondot.org>2009-07-13 21:48:33 +0000
commitb6047e6afa3e9a628d78693c73c99716f3ae465a (patch)
treec91d0fbf65e019828784c4079990bce78ef4dc2d
parent03cc004a76b1504ea0b11feaab1e026e77eaaf55 (diff)
downloadexternal_llvm-b6047e6afa3e9a628d78693c73c99716f3ae465a.zip
external_llvm-b6047e6afa3e9a628d78693c73c99716f3ae465a.tar.gz
external_llvm-b6047e6afa3e9a628d78693c73c99716f3ae465a.tar.bz2
refactor operand printing to remove hte last of the "mem" modifier hack. The
only remaining modifier is "subreg". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75516 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp26
1 files changed, 13 insertions, 13 deletions
diff --git a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
index 5226082..887235c 100644
--- a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
+++ b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
@@ -499,9 +499,7 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo,
case MachineOperand::MO_ConstantPoolIndex:
case MachineOperand::MO_GlobalAddress:
case MachineOperand::MO_ExternalSymbol: {
- bool isMemOp = Modifier && !strcmp(Modifier, "mem");
- if (!isMemOp) O << '$';
-
+ O << '$';
printSymbolOperand(MO);
break;
}
@@ -545,7 +543,7 @@ void X86ATTAsmPrinter::printLeaMemReference(const MachineInstr *MI, unsigned Op,
} else {
assert(DispSpec.isGlobal() || DispSpec.isCPI() ||
DispSpec.isJTI() || DispSpec.isSymbol());
- printOperand(MI, Op+3, "mem");
+ printSymbolOperand(MI->getOperand(Op+3));
}
if (HasParenPart) {
@@ -661,17 +659,21 @@ bool X86ATTAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
if (ExtraCode && ExtraCode[0]) {
if (ExtraCode[1] != 0) return true; // Unknown modifier.
+ const MachineOperand &MO = MI->getOperand(OpNo);
+
switch (ExtraCode[0]) {
default: return true; // Unknown modifier.
case 'c': // Don't print "$" before a global var name or constant.
- if (MI->getOperand(OpNo).isImm())
- O << MI->getOperand(OpNo).getImm();
+ if (MO.isImm())
+ O << MO.getImm();
+ else if (MO.isGlobal() || MO.isCPI() || MO.isJTI() || MO.isSymbol())
+ printSymbolOperand(MO);
else
- printOperand(MI, OpNo, "mem");
+ printOperand(MI, OpNo);
return false;
case 'A': // Print '*' before a register (it must be a register)
- if (MI->getOperand(OpNo).isReg()) {
+ if (MO.isReg()) {
O << '*';
printOperand(MI, OpNo);
return false;
@@ -683,8 +685,8 @@ bool X86ATTAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
case 'w': // Print HImode register
case 'k': // Print SImode register
case 'q': // Print DImode register
- if (MI->getOperand(OpNo).isReg())
- return printAsmMRegister(MI->getOperand(OpNo), ExtraCode[0]);
+ if (MO.isReg())
+ return printAsmMRegister(MO, ExtraCode[0]);
printOperand(MI, OpNo);
return false;
@@ -692,17 +694,15 @@ bool X86ATTAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
print_pcrel_imm(MI, OpNo);
return false;
- case 'n': { // Negate the immediate or print a '-' before the operand.
+ case 'n': // Negate the immediate or print a '-' before the operand.
// Note: this is a temporary solution. It should be handled target
// independently as part of the 'MC' work.
- const MachineOperand &MO = MI->getOperand(OpNo);
if (MO.isImm()) {
O << -MO.getImm();
return false;
}
O << '-';
}
- }
}
printOperand(MI, OpNo);