https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96214

            Bug ID: 96214
           Summary: gcc warn unreached else {}
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jg at jguk dot org
  Target Milestone: ---

First posted here
https://gcc.gnu.org/pipermail/gcc-help/2020-July/139136.html

Can g++ warn where code will not get to the 'return 3;' below? 
This isn't real code, this is just an example. Upon code reviews, I do come
across something like this, so a warning would be handy.

My example


int main(void)
{
     const int i = 1;
     if(1 == i)
     {
         return 1;
     }
     else if(1 != i)
     {
         return 2;
     }
     else
     {
         return 3;
     }
} 

Quoting Martin Sebor

-Wduplicated-branches detects a related problem.  It's implemented
entirely in the front end and quite simplistic.  It just looks at
the chain of expressions controlling the if statements and compares
them for equality.  I think it could be enhanced with not too much
effort to detect a subset of this problem as well by considering
the operator as well as its operands.

Here's the function that does the checking and issues the warning:
https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/c-family/c-warn.c#l2491

Martin

Reply via email to