On Tue, Aug 09, 2016 at 12:18:11PM +0200, Marek Polacek wrote:
> > > On Wed, 27 Jul 2016, Marek Polacek wrote:
> > > 
> > > > And this is the rest.  Either I just adjusted a falls through comment,
> > > > or I added __builtin_fallthrough ().  These were the cases where I was
> > > > fairly sure that the fall through is intentional.
> > > 
> > > I saw one case where I think the warning is a bit over-active:
> > > 
> > > @@ -42072,6 +42089,7 @@ rdseed_step:
> > >      case IX86_BUILTIN_ADDCARRYX64:
> > >        icode = CODE_FOR_addcarrydi;
> > >        mode0 = DImode;
> > > +      gcc_fallthrough ();
> > > 
> > >      handlecarry:
> > >        arg0 = CALL_EXPR_ARG (exp, 0); /* unsigned char c_in.  */
> > > 
> > > I.e. it also warns if the following label is not a case label but a normal
> > > one.  I don't think this counts as a classical fall-through and it IMHO
> > > should not be warned about nor should it be marked.
> 
> Ok, I'll buy that.
> 
> > It's probably the same underlying issue I saw with a false-positive in one
> > of the other patches.
> 
> Yes.  I'll adjust the warning to not warn for non-case labels.

What about the case where you have non-case labels followed by case labels?
I think warning for:
  case 1:
    something ();
  lab:
  case 2:
    something_else ();
is still desirable, so just avoid the warning for
  case 1:
    something ();
  lab:
    something_else ();
?

        Jakub

Reply via email to