PowerPC ncg never uses the rules to stack LOCAL or DLOCAL.

This commit is contained in:
George Koehler 2017-10-15 15:22:52 -04:00
parent aa876ff4c2
commit f0619ea4ae

View file

@ -328,6 +328,7 @@ INSTRUCTIONS
xori GPR:wo, GPR:ro, CONST:ro. xori GPR:wo, GPR:ro, CONST:ro.
xoris 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). comment "!" LABEL:ro cost(0, 0).
@ -588,16 +589,6 @@ TESTS
STACKINGRULES 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 from REG to STACK
gen gen
COMMENT("stack REG") COMMENT("stack REG")
@ -615,7 +606,7 @@ STACKINGRULES
move %1, FSCRATCH move %1, FSCRATCH
stfdu FSCRATCH, {IND_RC_D, sp, 0-8} stfdu FSCRATCH, {IND_RC_D, sp, 0-8}
from FREG+DLOCAL to STACK from FREG to STACK
gen gen
COMMENT("stack FREG+DLOCAL") COMMENT("stack FREG+DLOCAL")
stfdu %1, {IND_RC_D, sp, 0-8} stfdu %1, {IND_RC_D, sp, 0-8}
@ -625,6 +616,16 @@ STACKINGRULES
COMMENT("stack FSREG") COMMENT("stack FSREG")
stfsu %1, {IND_RC_W, sp, 0-4} 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 COERCIONS