From: George Koehler Date: Wed, 28 Sep 2016 04:13:35 +0000 (-0400) Subject: For "pat ass", move fake stack to real stack before adjusting SP. X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=a71eee391420c2e7c284e217190290520d3e1ec3;p=ack.git For "pat ass", move fake stack to real stack before adjusting SP. This fixes code that tried to "addi SP, SP, 4" to drop a value that was in a register, not on the real stack. Add a rule to optimize "asp 4" (which becomes "loc 4" "ass") when the value being dropped is already in a GPR. --- diff --git a/mach/powerpc/ncg/table b/mach/powerpc/ncg/table index 547fe070b..a5585bed7 100644 --- a/mach/powerpc/ncg/table +++ b/mach/powerpc/ncg/table @@ -2004,12 +2004,19 @@ PATTERNS pat str $1==2 /* Store HP */ leaving ste ".reghp" - + + pat loc ass $1==4 /* Drop 4 bytes from stack */ + with exact GPR + /* nop */ + with STACK + gen + addi SP, SP, {CONST, 4} + pat ass /* Adjust stack by variable amount */ - with CONST + with CONST STACK gen move {SUM_RC, SP, %1.val}, {GPRE, SP} - with GPR + with GPR STACK gen move {SUM_RR, SP, %1}, {GPRE, SP}