summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
diff options
context:
space:
mode:
authorVenkatraman Govindaraju <venkatra@cs.wisc.edu>2014-01-11 19:38:03 +0000
committerVenkatraman Govindaraju <venkatra@cs.wisc.edu>2014-01-11 19:38:03 +0000
commit0653218b2b8c22c2f4b7981965061291b878090a (patch)
tree0e05be03761c002051e0aeac640912c732586912 /llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
parent2210562249a199be92334d3ca89d6d146b95a945 (diff)
downloadbcm5719-llvm-0653218b2b8c22c2f4b7981965061291b878090a.tar.gz
bcm5719-llvm-0653218b2b8c22c2f4b7981965061291b878090a.zip
[Sparc] Bundle instruction with delay slow and its filler. Now, we can use -verify-machineinstrs with SPARC backend.
llvm-svn: 199014
Diffstat (limited to 'llvm/lib/Target/Sparc/SparcAsmPrinter.cpp')
-rw-r--r--llvm/lib/Target/Sparc/SparcAsmPrinter.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp b/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
index c98be39621e..f24415796f4 100644
--- a/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
+++ b/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
@@ -184,7 +184,6 @@ static void LowerGETPCXAndEmitMCInsts(const MachineInstr *MI,
void SparcAsmPrinter::EmitInstruction(const MachineInstr *MI)
{
- MCInst TmpInst;
switch (MI->getOpcode()) {
default: break;
@@ -195,8 +194,13 @@ void SparcAsmPrinter::EmitInstruction(const MachineInstr *MI)
LowerGETPCXAndEmitMCInsts(MI, OutStreamer, OutContext);
return;
}
- LowerSparcMachineInstrToMCInst(MI, TmpInst, *this);
- OutStreamer.EmitInstruction(TmpInst);
+ MachineBasicBlock::const_instr_iterator I = MI;
+ MachineBasicBlock::const_instr_iterator E = MI->getParent()->instr_end();
+ do {
+ MCInst TmpInst;
+ LowerSparcMachineInstrToMCInst(I, TmpInst, *this);
+ OutStreamer.EmitInstruction(TmpInst);
+ } while ((++I != E) && I->isInsideBundle()); // Delay slot check.
}
void SparcAsmPrinter::EmitFunctionBodyStart() {
OpenPOWER on IntegriCloud