On 9/5/18 5:48 AM, a...@codesourcery.com wrote:
> 
> GCN has some registers which are special purpose, but not "fixed" because we
> want the register allocator to track their usage and select alternatives that
> use different special registers (e.g. scalar cc vs. vector cc).
> 
> Sometimes this leads the regrename pass to ICE.  Quite how it gets confused is
> not well understood, but considering such registers for renaming is surely not
> useful.
> 
> This patch creates a new macro SPECIAL_REGNO_P which disables regrename.  In
> other words, the register is fixed once allocated.
> 
> 2018-09-05  Kwok Cheung Yeung  <k...@codesourcery.com>
> 
>       gcc/
>       * defaults.h (SPECIAL_REGNO_P): Define to false by default.
>       * regrename.c (check_new_reg_p): Do not rename to a special register.
>       (rename_chains): Do not rename special registers.
This feels like you're papering over a problem in regrename and/or the
GCN port..  regrename should be checking the predicate and constraints
when it makes changes.  And I think that you're still allowed to refer
to a fixed register in alternatives.

Jeff

Reply via email to