From f0619ea4ae98901ab87a0cd8ab09f35010e53f63 Mon Sep 17 00:00:00 2001 From: George Koehler Date: Sun, 15 Oct 2017 15:22:52 -0400 Subject: [PATCH] PowerPC ncg never uses the rules to stack LOCAL or DLOCAL. --- mach/powerpc/ncg/table | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/mach/powerpc/ncg/table b/mach/powerpc/ncg/table index 23b904264..a116209d9 100644 --- a/mach/powerpc/ncg/table +++ b/mach/powerpc/ncg/table @@ -328,6 +328,7 @@ INSTRUCTIONS xori GPR:wo, GPR:ro, CONST:ro. xoris GPR:wo, GPR:ro, CONST:ro. + bug ">>> BUG" LABEL:ro cost(0, 0). comment "!" LABEL:ro cost(0, 0). @@ -588,16 +589,6 @@ TESTS STACKINGRULES - from LOCAL inreg(%off)==reg_float to STACK - gen - COMMENT("stack LOCAL") - stfsu %1, {IND_RC_W, sp, 0-4} - - from LOCAL to STACK - gen - COMMENT("stack LOCAL") - stwu %1, {IND_RC_W, sp, 0-4} - from REG to STACK gen COMMENT("stack REG") @@ -615,7 +606,7 @@ STACKINGRULES move %1, FSCRATCH stfdu FSCRATCH, {IND_RC_D, sp, 0-8} - from FREG+DLOCAL to STACK + from FREG to STACK gen COMMENT("stack FREG+DLOCAL") stfdu %1, {IND_RC_D, sp, 0-8} @@ -625,6 +616,16 @@ STACKINGRULES COMMENT("stack FSREG") stfsu %1, {IND_RC_W, sp, 0-4} + /* + * We never stack LOCAL or DLOCAL tokens, because we only use + * them for register variables, so ncg pushes the register, + * not the token. These rules only prevent an error in ncgg. + */ + from LOCAL to STACK + gen bug {LABEL, "STACKING LOCAL"} + from DLOCAL to STACK + gen bug {LABEL, "STACKING DLOCAL"} + COERCIONS -- 2.34.1