On Mon, Apr 21, 2014 at 10:15:19AM -0700, Richard Henderson wrote:
> On 04/21/2014 09:53 AM, Jan-Benedict Glaw wrote:
> > /home/jbglaw/repos/gcc/gcc/config/sparc/sparc.c:4858: error: invalid 
> > conversion from ‘int’ to ‘machine_mode’
> 
> 
> Yes, something has changed recently in the build flags to (I believe) remove
> -fpermissive.  Quite a few backends are affected by this change.
> 
> I've already fixed a similar error in the aarch64 backend.  I've got a patch
> fixing sparc, but havn't committed or posted it yet.

Actually, the change was in the GET_MODE_SIZE (and a few others macros),
previously they would happily accept int argument, now they (in C++) require
enum machine_mode.
Previously it was:
#define GET_MODE_SIZE(MODE)    ((unsigned short) mode_size[MODE])
and now for recent GCC it is:
#define GET_MODE_SIZE(MODE) \
  ((unsigned short) (__builtin_constant_p (MODE) \
                     ? mode_size_inline (MODE) : mode_size[MODE]))
Sure, we could change this to use mode_size_inline ((enum machine_mode) (MODE))
in the macro instead, but I'd say for GCC codebase it is better if we fix
the few users of these macros that pass an int rather than enum machine_mode
to these macros.

        Jakub

Reply via email to