diff options
-rw-r--r-- | lib/VMCore/AsmWriter.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/lib/VMCore/AsmWriter.cpp b/lib/VMCore/AsmWriter.cpp index b3f8db7c42..958980bad6 100644 --- a/lib/VMCore/AsmWriter.cpp +++ b/lib/VMCore/AsmWriter.cpp @@ -804,20 +804,22 @@ void AssemblyWriter::printInstruction(const Instruction &I) { bool PrintAllTypes = false; const Type *TheType = Operand->getType(); - for (unsigned i = 1, E = I.getNumOperands(); i != E; ++i) { - Operand = I.getOperand(i); - if (Operand->getType() != TheType) { - PrintAllTypes = true; // We have differing types! Print them all! - break; + // Shift Left & Right print both types even for Ubyte LHS + if (isa<ShiftInst>(I)) { + PrintAllTypes = true; + } else { + for (unsigned i = 1, E = I.getNumOperands(); i != E; ++i) { + Operand = I.getOperand(i); + if (Operand->getType() != TheType) { + PrintAllTypes = true; // We have differing types! Print them all! + break; + } } } - - // Shift Left & Right print both types even for Ubyte LHS - if (isa<ShiftInst>(I)) PrintAllTypes = true; - + if (!PrintAllTypes) { Out << " "; - printType(I.getOperand(0)->getType()); + printType(TheType); } for (unsigned i = 0, E = I.getNumOperands(); i != E; ++i) { |