I would expect gcc to optimize away the unreachable code in both functions
below but only in the first one is it eliminated. In addition, even though
the call to f1() in f3() can never be executed the compiler issues no
warning.

$ cat -n t.C && g++ -Wunreachable-code -O3 -S t.C
     1  void f1 ();
     2
     3  int f2 ()
     4  {
     5      int x = 0;
     6
     7      if (x == 0) return 0;
     8      f1 ();
     9
    10      return 1;
    11  }
    12
    13  int f3 ()
    14  {
    15      static int x;
    16
    17      if (x == 0) return 0;
    18      f1 (); 
    19
    20      return 1;
    21  }
    22
t.C: In function ‘int f2()’:
t.C:8: warning: will never be executed


-- 
           Summary: missing optimiation on unreachable code
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: sebor at roguewave dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37063

Reply via email to