Convert two if sequences to switches.

llvm-svn: 195859
This commit is contained in:
Rafael Espindola 2013-11-27 18:26:51 +00:00
parent c03868615b
commit 52434f9673
1 changed files with 22 additions and 11 deletions

View File

@ -426,31 +426,42 @@ bool X86AsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
// See if this is a generic print operand // See if this is a generic print operand
return AsmPrinter::PrintAsmOperand(MI, OpNo, AsmVariant, ExtraCode, O); return AsmPrinter::PrintAsmOperand(MI, OpNo, AsmVariant, ExtraCode, O);
case 'a': // This is an address. Currently only 'i' and 'r' are expected. case 'a': // This is an address. Currently only 'i' and 'r' are expected.
if (MO.isImm()) { switch (MO.getType()) {
default:
return true;
case MachineOperand::MO_Immediate:
O << MO.getImm(); O << MO.getImm();
return false; return false;
} case MachineOperand::MO_GlobalAddress:
if (MO.isGlobal() || MO.isCPI() || MO.isJTI() || MO.isSymbol()) { case MachineOperand::MO_ConstantPoolIndex:
case MachineOperand::MO_JumpTableIndex:
case MachineOperand::MO_ExternalSymbol:
printSymbolOperand(*this, MO, O); printSymbolOperand(*this, MO, O);
if (Subtarget->isPICStyleRIPRel()) if (Subtarget->isPICStyleRIPRel())
O << "(%rip)"; O << "(%rip)";
return false; return false;
} case MachineOperand::MO_Register:
if (MO.isReg()) {
O << '('; O << '(';
printOperand(*this, MI, OpNo, O); printOperand(*this, MI, OpNo, O);
O << ')'; O << ')';
return false; return false;
} }
return true;
case 'c': // Don't print "$" before a global var name or constant. case 'c': // Don't print "$" before a global var name or constant.
if (MO.isImm()) switch (MO.getType()) {
O << MO.getImm(); default:
else if (MO.isGlobal() || MO.isCPI() || MO.isJTI() || MO.isSymbol())
printSymbolOperand(*this, MO, O);
else
printOperand(*this, MI, OpNo, O); printOperand(*this, MI, OpNo, O);
break;
case MachineOperand::MO_Immediate:
O << MO.getImm();
break;
case MachineOperand::MO_GlobalAddress:
case MachineOperand::MO_ConstantPoolIndex:
case MachineOperand::MO_JumpTableIndex:
case MachineOperand::MO_ExternalSymbol:
printSymbolOperand(*this, MO, O);
break;
}
return false; return false;
case 'A': // Print '*' before a register (it must be a register) case 'A': // Print '*' before a register (it must be a register)