[llvm-commits] [llvm] r47045 - /llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td

Nicolas Geoffray nicolas.geoffray at lip6.fr
Wed Feb 13 07:33:44 PST 2008


Hi Nate,

Nate Begeman wrote:
> Author: sampo
> Date: Tue Feb 12 20:58:33 2008
> New Revision: 47045
>
> URL: http://llvm.org/viewvc/llvm-project?rev=47045&view=rev
> Log:
> Make register scavenging happy by not using a reg (CR0) that isn't defined
>
>   

I don't know about darwin, but this breaks linux/ppc32 JIT (llc works
fine). On a simple test case:

define i32 @main(i32 %argc) {
entry:
        %tmp2 = add i32 2, %argc
        ret i32 %tmp2
}

I get:

# Machine code for main():
Live Ins: r3 in VR#1024
Live Outs: r3

entry: 0x109cde80, LLVM BB @0x109c2640, ID#0:
Live Ins: %r3
        %r3<def> = ADDI %r3<kill>, 2
        BLR 20, %reg0, %r3<imp-use,kill>

# End machine code for main().

and the emission of the BLR instruction gives an error message:
Unhandled reg in PPCRegisterInfo::getRegisterNumbering!

It happens line 125 of PPCCodeEmitter.cpp. And the register number is zero.

Do you not get this on darwin?

Thanks,
Nicolas

> Modified:
>     llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td
>
> Modified: llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td?rev=47045&r1=47044&r2=47045&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td (original)
> +++ llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td Tue Feb 12 20:58:33 2008
> @@ -293,7 +293,7 @@
>  // PowerPC Predicate operand.  20 = (0<<5)|20 = always, CR0 is a dummy reg
>  // that doesn't matter.
>  def pred : PredicateOperand<OtherVT, (ops imm, CRRC),
> -                                     (ops (i32 20), CR0)> {
> +                                     (ops (i32 20), (i32 zero_reg))> {
>    let PrintMethod = "printPredicateOperand";
>  }
>  
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>   




More information about the llvm-commits mailing list