<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><span class="vcard"><a class="email" href="mailto:richard-llvm@metafoo.co.uk" title="Richard Smith <richard-llvm@metafoo.co.uk>"> <span class="fn">Richard Smith</span></a>
</span> changed
          <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - Program crashing due to missing return statement?"
   href="https://bugs.llvm.org/show_bug.cgi?id=32158">bug 32158</a>
          <br>
             <table border="1" cellspacing="0" cellpadding="8">
          <tr>
            <th>What</th>
            <th>Removed</th>
            <th>Added</th>
          </tr>

         <tr>
           <td style="text-align:right;">CC</td>
           <td>
                
           </td>
           <td>richard-llvm@metafoo.co.uk
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Status</td>
           <td>NEW
           </td>
           <td>RESOLVED
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Resolution</td>
           <td>---
           </td>
           <td>INVALID
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - Program crashing due to missing return statement?"
   href="https://bugs.llvm.org/show_bug.cgi?id=32158#c1">Comment # 1</a>
              on <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - Program crashing due to missing return statement?"
   href="https://bugs.llvm.org/show_bug.cgi?id=32158">bug 32158</a>
              from <span class="vcard"><a class="email" href="mailto:richard-llvm@metafoo.co.uk" title="Richard Smith <richard-llvm@metafoo.co.uk>"> <span class="fn">Richard Smith</span></a>
</span></b>
        <pre>A compiler is not permitted to reject a program merely because some function in
it unconditionally evokes undefined behavior.

For user convenience, at -O0 we insert a trap instruction at the end of such a
function, and at -O1 and above we optimize on the basis that the end of the
function is unreachable if there is a missing 'return' statement.

In Clang 4, you can use -fno-strict-return to instead request that the function
returns uninitialized garbage when this happens. Obviously that's likely to
misbehave at runtime if the return value is used or the return type is not
trivially-destructible, but this can make sense for instance when compiling C
code as C++ (C has weaker rules in this area).


The proposed change in this bug (making -Wreturn-type an error by default)
would not be conforming; I'm marking this INVALID on that basis, but feel free
to reopen if you think there are still things that could be improved here.</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>