On 2012-07-31 03:47, Nick Clifton wrote:
>       /* We do this because the M32C has an HImode operand, but the
>          M16C has an 8-bit operand.  Since gcc looks at the match data
>          and not the expanded rtl, we have to reset the optab so that
>          the right modes are found. */
>       if (TARGET_A24)
>         {
>           set_optab_handler (cstore_optab, QImode, CODE_FOR_cstoreqi4_24);
>           set_optab_handler (cstore_optab, HImode, CODE_FOR_cstorehi4_24);
>           set_optab_handler (cstore_optab, PSImode, CODE_FOR_cstorepsi4_24);
>         }
>     }
> 
>   But I could not see an obvious way to fix it.  Should I be using
>   swap_optab_handler as a replacement function ?

No, you need to use just one pattern for both subtargets.

It seems like you could standardize on QImode from the expander here,
but then for A24 add a zero_extend pattern or something to recover the
HImode?


r~

Reply via email to