diff options
| author | Misha Brukman <brukman+llvm@gmail.com> | 2004-07-27 18:40:39 +0000 | 
|---|---|---|
| committer | Misha Brukman <brukman+llvm@gmail.com> | 2004-07-27 18:40:39 +0000 | 
| commit | a594740016e0901acdf1dbad62b246b5660f1cbd (patch) | |
| tree | 425cd2c65ac505a9544c0c37cdbadc94b312768a /llvm/lib/Target/PowerPC/PowerPCAsmPrinter.cpp | |
| parent | 09396bf1586702d316e2c64424fb92013809fd56 (diff) | |
| download | bcm5719-llvm-a594740016e0901acdf1dbad62b246b5660f1cbd.tar.gz bcm5719-llvm-a594740016e0901acdf1dbad62b246b5660f1cbd.zip | |
Correctly print out long branches, assert on finding pseudo instr COND_BRANCH
Patch by Nate Begeman.
llvm-svn: 15286
Diffstat (limited to 'llvm/lib/Target/PowerPC/PowerPCAsmPrinter.cpp')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PowerPCAsmPrinter.cpp | 13 | 
1 files changed, 12 insertions, 1 deletions
| diff --git a/llvm/lib/Target/PowerPC/PowerPCAsmPrinter.cpp b/llvm/lib/Target/PowerPC/PowerPCAsmPrinter.cpp index 5412e0faac0..2da7a521c09 100644 --- a/llvm/lib/Target/PowerPC/PowerPCAsmPrinter.cpp +++ b/llvm/lib/Target/PowerPC/PowerPCAsmPrinter.cpp @@ -507,7 +507,10 @@ void Printer::printMachineInstruction(const MachineInstr *MI) {    // appropriate number of args that the assembler expects.  This is because    // may have many arguments appended to record the uses of registers that are    // holding arguments to the called function. -  if (Opcode == PPC32::IMPLICIT_DEF) { +  if (Opcode == PPC32::COND_BRANCH) { +    std::cerr << "Error: untranslated conditional branch psuedo instruction!\n"; +    abort(); +  } else if (Opcode == PPC32::IMPLICIT_DEF) {      O << "; IMPLICIT DEF ";      printOp(MI->getOperand(0));      O << "\n"; @@ -569,10 +572,18 @@ void Printer::printMachineInstruction(const MachineInstr *MI) {      O << ")\n";    } else {      for (i = 0; i < ArgCount; ++i) { +      // addi and friends        if (i == 1 && ArgCount == 3 && ArgType[2] == PPC32II::Simm16 &&            MI->getOperand(1).hasAllocatedReg() &&             MI->getOperand(1).getReg() == PPC32::R0) {          O << "0"; +      // for long branch support, bc $+8 +      } else if (i == 1 && ArgCount == 2 && MI->getOperand(1).isImmediate() && +                 TII.isBranch(MI->getOpcode())) { +        O << "$+8"; +        assert(8 == MI->getOperand(i).getImmedValue() +          && "branch off PC not to pc+8?"); +        //printOp(MI->getOperand(i));        } else {          printOp(MI->getOperand(i));        } | 

