diff options
author | Chris Lattner <sabre@nondot.org> | 2009-07-13 21:48:33 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-07-13 21:48:33 +0000 |
commit | b6047e6afa3e9a628d78693c73c99716f3ae465a (patch) | |
tree | c91d0fbf65e019828784c4079990bce78ef4dc2d | |
parent | 03cc004a76b1504ea0b11feaab1e026e77eaaf55 (diff) | |
download | external_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.cpp | 26 |
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); |