problems compiling 4.7, with Solaris cc and/or Solaris CC (C++)
1) ENUM_BITFIELD is not portable. I've reported this before.
It should be more like:
#ifdef __cplusplus
#define ENUM_BITFIELD(TYPE, NAME, SIZE) enum TYPE NAME : SIZE
#elif (GCC_VERSION > 2000)
#define ENUM_BITFIELD(TYPE, NAME, SIZE) __extension__ enum TYPE NAME : SIZE
#else
#define ENUM_BITFIELD(TYPE, NAME, SIZE) unsigned int NAME : SIZE
#endif
and then modify the uses to fit -- three parameters.
It is likely that in 4.8 this is moot, as the C++ case will be the only one
remaining.
2) given:
int foo()
{
gcc_unreachable();
}
Solaris cc/CC gives a warning or maybe an error.
It should be:
int foo(void)
{
gcc_unreachable();
return 0;
}
This occurs a few times e.g. in i386.md.
Despite me being uncertain between warnings and errors and cc and CC,
these do definitely show up as problems.
I've been building a few versions of gcc through the years from 4.2
and up (yeah, yeah, I know it goes back much further) with a variety
of host compilers, mostly a few versions of gcc/g++ but sometimes Solaris cc/CC,
maybe others, and I've had to patch these repeatedly. Again, today, in 4.7.
I do use -disable-bootstrap, to drastically cut build times.
It is possible that contributes to "the problem", but I also think these
are reasonable changes and -disable-bootstrap is really nice to use, it
saves a lot of time and these aren't awful ancient non-optimizing host
compilers.
Thanks,
- Jay