At the register allocation BOF during the Cauldron someone (I forget who) raised the question of when/how do we get rid of reload.
The first step in that process is to drop support for cc0. cc0 is a horribly antiquated mechanism for describing how to handle condition codes. It has numerous limitations, the most problematical being the requirement that the cc0 setter and cc0 user must be consecutive in the IL. This requirement bleeds all over the compiler resulting in code that is harder to understand and maintain. I'm fairly confident this code is broken in various ways, particularly WRT exceptions. So this message is serving as official notice that we are *deprecating* all cc0 support in gcc-10. We are not removing any code or targets at this time -- removals would happen during the gcc-11 cycle. avr cris h8300 m68k vax cr16 This is based on actually looking at the backend patterns. backends.html indicates the mn103 port would be affected, but I think it's just out-of-date. Similarly it fails to mention cr16, but cr16 clearly has affected patterns (I'll address that separately) This patch deprecates the affected targets. With some magic folks can continue to build them. However, if nobody steps forward to convert them from cc0 to MODE_CC those targets will be removed during the gcc-11 cycle. If someone is interested in possibly doing a conversion, I would strongly recommend reviewing the best documentation we have on the subject: https://gcc.gnu.org/wiki/CC0Transition I worked with my son about a year ago to transition the v850 to MODE_CC using that page as a guideline. We also have a partial transition for the H8/300 port (not far enough to even build anything yet). I had hoped we would finish the H8/300 port last year and would have tackled another, but events have gotten in the way. The transition isn't terribly hard, but does take time because of the number of patterns that have to be changed. Let the discussion begin... Jeff
diff --git a/gcc/config.gcc b/gcc/config.gcc index 69d0a024d85..0c1637e8be1 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -248,6 +248,12 @@ md_file= # Obsolete configurations. case ${target} in tile*-*-* \ + avr*-*-* \ + h8300*-*-* \ + cris*-*-* \ + m68k*-*-* \ + vax*-*-* \ + cr16*-*-* \ ) if test "x$enable_obsolete" != xyes; then echo "*** Configuration ${target} is obsolete." >&2 @@ -273,7 +279,6 @@ case ${target} in | arm*-*-uclinux* \ | i[34567]86-go32-* \ | i[34567]86-*-go32* \ - | m68k-*-uclinuxoldabi* \ | mips64orion*-*-rtems* \ | pdp11-*-bsd \ | powerpc*-*-linux*paired* \ @@ -294,7 +299,6 @@ case ${target} in | *-*-solaris2.[0-9].* \ | *-*-solaris2.10* \ | *-*-sysv* \ - | vax-*-vms* \ ) echo "*** Configuration ${target} not supported" 1>&2 exit 1