Index: llvm/trunk/include/llvm/MC/MCInst.h =================================================================== --- llvm/trunk/include/llvm/MC/MCInst.h +++ llvm/trunk/include/llvm/MC/MCInst.h @@ -208,6 +208,8 @@ /// string. void dump_pretty(raw_ostream &OS, const MCInstPrinter *Printer = nullptr, StringRef Separator = " ") const; + void dump_pretty(raw_ostream &OS, StringRef Name, + StringRef Separator = " ") const; }; inline raw_ostream& operator<<(raw_ostream &OS, const MCOperand &MO) { Index: llvm/trunk/lib/MC/MCInst.cpp =================================================================== --- llvm/trunk/lib/MC/MCInst.cpp +++ llvm/trunk/lib/MC/MCInst.cpp @@ -72,11 +72,17 @@ void MCInst::dump_pretty(raw_ostream &OS, const MCInstPrinter *Printer, StringRef Separator) const { + StringRef InstName = Printer ? Printer->getOpcodeName(getOpcode()) : ""; + dump_pretty(OS, InstName, Separator); +} + +void MCInst::dump_pretty(raw_ostream &OS, StringRef Name, + StringRef Separator) const { OS << "getOpcodeName(getOpcode()); + // Show the instruction opcode name if we have it. + if (!Name.empty()) + OS << ' ' << Name; for (unsigned i = 0, e = getNumOperands(); i != e; ++i) { OS << Separator; Index: llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp =================================================================== --- llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp +++ llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp @@ -9310,6 +9310,10 @@ switch (MatchResult) { case Match_Success: + LLVM_DEBUG(dbgs() << "Parsed as: "; + Inst.dump_pretty(dbgs(), MII.getName(Inst.getOpcode())); + dbgs() << "\n"); + // Context sensitive operand constraints aren't handled by the matcher, // so check them here. if (validateInstruction(Inst, Operands)) { @@ -9327,7 +9331,9 @@ // individual transformations can chain off each other. E.g., // tPOP(r8)->t2LDMIA_UPD(sp,r8)->t2STR_POST(sp,r8) while (processInstruction(Inst, Operands, Out)) - ; + LLVM_DEBUG(dbgs() << "Changed to: "; + Inst.dump_pretty(dbgs(), MII.getName(Inst.getOpcode())); + dbgs() << "\n"); // Only after the instruction is fully processed, we can validate it if (wasInITBlock && hasV8Ops() && isThumb() &&