[committed] rs6000: Fix bootstrap

Message ID 20220119112732.GS2646553@tucnak
State Committed
Headers
Series [committed] rs6000: Fix bootstrap |

Commit Message

Jakub Jelinek Jan. 19, 2022, 11:27 a.m. UTC
  On Wed, Jan 19, 2022 at 07:54:19AM +0100, Sebastian Huber wrote:
> On 18/01/2022 22:42, Segher Boessenkool wrote:
> > > +    default:
> > > +      break;
> > Please don't do that.  You can do
> > 
> >    default:
> >      break;
> >      break;
> >      /* And just to make sure:  */
> >      break;
> >      break;
> > 
> > and it will do exactly the same as not having a default at all.  Not
> > having such useless code is by far the most readable, so please don't
> > include a default case at all.
> 
> I removed the default case. I hope this is what you wanted.

Unfortunately the removal of default: break; breaks bootstrap:
../../gcc/config/rs6000/rs6000.cc: In function ‘const char* rs6000_machine_from_flags()’:
../../gcc/config/rs6000/rs6000.cc:5940:10: error: enumeration value ‘PROCESSOR_PPC601’ not handled in switch [-Werror=switch]
 5940 |   switch (rs6000_cpu)
      |          ^
../../gcc/config/rs6000/rs6000.cc:5940:10: error: enumeration value ‘PROCESSOR_PPC603’ not handled in switch [-Werror=switch]
...
default: break; is needed to tell the -Wswitch warning that it is intentional
that not all enumerators are handled in the switch.

I've committed following as obvious to unbreak the bootstrap.

2022-01-19  Jakub Jelinek  <jakub@redhat.com>

	* config/rs6000/rs6000.cc (rs6000_machine_from_flags): Add default:.



	Jakub
  

Comments

Segher Boessenkool Jan. 19, 2022, 3:51 p.m. UTC | #1
On Wed, Jan 19, 2022 at 12:27:32PM +0100, Jakub Jelinek wrote:
> On Wed, Jan 19, 2022 at 07:54:19AM +0100, Sebastian Huber wrote:
> > On 18/01/2022 22:42, Segher Boessenkool wrote:
> > > > +    default:
> > > > +      break;
> > > Please don't do that.  You can do
> > > 
> > >    default:
> > >      break;
> > >      break;
> > >      /* And just to make sure:  */
> > >      break;
> > >      break;
> > > 
> > > and it will do exactly the same as not having a default at all.  Not
> > > having such useless code is by far the most readable, so please don't
> > > include a default case at all.
> > 
> > I removed the default case. I hope this is what you wanted.

It was.

> Unfortunately the removal of default: break; breaks bootstrap:

&^$()^&#%(^&^!

A questionable warning (switch often is used as a "shorthand" for a
bunch of if statements, like here; quotes because it is actually
*longer* in this case).  And combined with -Werror (the scourge of
sanity) it is much worse: we often make worse code just not to have the
mistaken warnings.

> I've committed following as obvious to unbreak the bootstrap.

Thanks!


Segher
  

Patch

--- gcc/config/rs6000/rs6000.cc.jj
+++ gcc/config/rs6000/rs6000.cc
@@ -5958,6 +5958,9 @@  rs6000_machine_from_flags (void)
 
     case PROCESSOR_PPCE6500:
       return "e6500";
+
+    default:
+      break;
     }
 
   HOST_WIDE_INT flags = rs6000_isa_flags;