Add missing size declarations for 8-byte registers.
authorGeorge Koehler <xkernigh@netscape.net>
Wed, 25 Jan 2017 16:24:23 +0000 (11:24 -0500)
committerGeorge Koehler <xkernigh@netscape.net>
Wed, 25 Jan 2017 16:56:58 +0000 (11:56 -0500)
This fixes the coercion from IND_ALL_D to FREG.  The coercion had
never happened, because IND_ALL_D had 8 bytes but FREG had 4 bytes.
Instead, ncg always stacked the IND_ALL_D and unstacked a FREG.  The
stacking rule uses f0, so the code did load f0 with the indirect
value, push f0 to stack, load f1 to stack, move stack pointer.  Now
that FREG has 8 bytes, ncg does the coercion, and the code just loads
f1 with the indirect value.

mach/powerpc/ncg/table

index d42eb27..99c2e40 100644 (file)
@@ -42,9 +42,9 @@ PROPERTIES
 
        GPR             /* any GPR */
        REG             /* any allocatable GPR */
-       REG_PAIR        /* speed hack for sti 8 */
-       FPR             /* any FPR */
-       FREG            /* any allocatable FPR */
+       REG_PAIR(8)     /* speed hack for sti 8 */
+       FPR(8)          /* any FPR */
+       FREG(8)         /* any allocatable FPR */
        FSREG           /* any allocatable single-precision FPR */
        SPR             /* any SPR */
        CR              /* any CR */
@@ -56,10 +56,10 @@ PROPERTIES
 
        CR0   CR1
 
-       FPR0  FPR1  FPR2  FPR3  FPR4  FPR5  FPR6  FPR7
-       FPR8  FPR9  FPR10 FPR11 FPR12 FPR13 FPR14 FPR15
-       FPR16 FPR17 FPR18 FPR19 FPR20 FPR21 FPR22 FPR23
-       FPR24 FPR25 FPR26 FPR27 FPR28 FPR29 FPR30 FPR31
+       FPR0(8)  FPR1(8)  FPR2(8)  FPR3(8)  FPR4(8)  FPR5(8)  FPR6(8)  FPR7(8)
+       FPR8(8)  FPR9(8)  FPR10(8) FPR11(8) FPR12(8) FPR13(8) FPR14(8) FPR15(8)
+       FPR16(8) FPR17(8) FPR18(8) FPR19(8) FPR20(8) FPR21(8) FPR22(8) FPR23(8)
+       FPR24(8) FPR25(8) FPR26(8) FPR27(8) FPR28(8) FPR29(8) FPR30(8) FPR31(8)
 
 REGISTERS