approaches to carry-flag modelling in RTL

Paulo J. Matos paulo@matos-sorge.com
Tue Nov 1 13:51:00 GMT 2011


On 01/11/11 02:43, Hans-Peter Nilsson wrote:
>
> Not obvious or maybe I was unclear as to what I alluded?
> In the below insn-bodies, "sub" is the insn that sets cc0 as a
> side-effect.
>
> Supposed canonical form :
>
> (parallel
>   [(set cc_reg) (compare ...))
>    (set destreg) (sub ...))])
> and:
> (parallel
>   [(set destreg) (sub ...))
>    (clobber cc_reg)])
>
> But IMHO it'd be easier (for most values of "easier") to combine
> both patterns with that non-existing mechanism (and no, I don't
> count match_parallel) if we instead canonicalized on the CC_REG
> set being the same as the clobber position:
>
> (parallel
>   [(set destreg) (sub ...))
>    (set cc_reg) (compare ...))])
> with:
> (parallel
>   [(set destreg) (sub ...))
>    (clobber cc_reg)])
>
> brgds, H-P
>

That is very strange because if you look into RX or MN10300, they all 
have the set REG_CC as the last in the parallel. I wonder if it has 
anything to do with the fact that in these backends the set of the 
REG_CC only shows up after reload.


-- 
PMatos



More information about the Gcc mailing list