<html>
    <head>
      <base href="http://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - missing -Wreturn-type on a function try block with no return"
   href="http://llvm.org/bugs/show_bug.cgi?id=20675">20675</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>missing -Wreturn-type on a function try block with no return
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>C++
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>msebor@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>dgregor@apple.com, llvmbugs@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Both Clang 3.4 and recent trunk diagnose functions f1 and f2 for possibly
flowing off the end, but fail to diagnose the missing return statement in
function f3 flowing off the end of the function-try-block:

$ cat z.c && ./llvm-head-gcc-4.8.2-x86_64-linux/Debug+Asserts/bin/clang -m32
-Wreturn-type -fsyntax-only -xc++ z.c
int f0 ();

int f1 () { if (f0 () < 0) return -1; }
int f2 () { try { return f0 (); } catch (...) { } }
int f3 () try { return f0 (); } catch (...) { }
z.c:3:39: warning: control may reach end of non-void function [-Wreturn-type]
int f1 () { if (f0 () < 0) return -1; }
                                      ^
z.c:4:51: warning: control may reach end of non-void function [-Wreturn-type]
int f2 () { try { return f0 (); } catch (...) { } }
                                                  ^
2 warnings generated.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>