On 29/10/11 18:33, Peter Bigot wrote:
On Sat, Oct 29, 2011 at 10:58 AM, Richard Henderson<r...@redhat.com>  wrote:
On 10/29/2011 05:41 AM, Peter Bigot wrote:
It seems cc0 should probably still be preferred for CISC-style
architectures like the MSP430.  I'll give that approach a try.

I think that's somewhat unfair.  Take a close look at the RX and
mn10300 ports -- they're what I would call the most up-to-date
of the cisc-y ports.


Using CC_MODE in this case certainly appears much more complicated
than using cc0.  Do you believe the effort required to get it right would be
justified?  Where would the win come from?


I can provide you with some insight here. We have a somewhat cisc-y port. I converted from cc0 to REG_CC based on the technique used in RX and MN10300.

Cons:
* Conversion took 2 weeks and increased the size of the backend due to the duplication of <rule> and <rule_flags>; * My somewhat wierd backend has strange sizes so I ended up having to modify core GCC in some parts: to set CC_MODE size and to enable moves clobbering flags;
* Some rules are not much harder to read;
* compare-elim.c doesn't work 100% since pass assumes rules have register as destination. If yours have a memory operand, elimination won't succeed;

Pros:
* 0.7% code size reduction;
* Hoping that future GCC versions will ease the use of a pseudo FLAGS_REG, improve compare-elim and boost code size reduction further.

Some colleagues said the change probably didn't make sense. I am still slightly hopeful in the longer term to show them otherwise.

Cheers,

--
PMatos

Reply via email to