<div dir="ltr">On 28 January 2013 17:18, Matt Turner <span dir="ltr"><<a href="mailto:mattst88@gmail.com" target="_blank">mattst88@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<div>On Mon, Jan 28, 2013 at 5:11 PM, Tom Gall <<a href="mailto:tom.gall@linaro.org" target="_blank">tom.gall@linaro.org</a>> wrote:<br>
> Sure, but tell that to the compiler.<br>
><br>
> It is bad form to not have a return at the end of a function which is<br>
> supposed to return something.  The other way perhaps is just knock out<br>
> the default case and return that. Either way.<br>
<br>
</div>% cat t.cpp<br>
#include <assert.h><br>
<br>
int f(int n) {<br>
        switch (n) {<br>
        case 1:<br>
                return 1;<br>
        default:<br>
                assert(!"FAIL");<br>
        }<br>
}<br>
<br>
% gcc -O2 -Wall -pedantic -Wreturn-type -Wno-return-type -c t.cpp<br>
<br>
<no output><br>
<br>
What flags do I have to use to get an error or warning? I tried with<br>
an without optimization, C and C++, and gcc versions 4.5.4, 4.6.3, and<br>
4.7.2.<br></blockquote><div><br></div><div>Keep in mind that when the "NDEBUG" symbol is defined, assertions have no effect, so it's possible for control flow to get past an assert(!"FAIL") statement.<br>
</div><div><br>This produces the warning for me:<br><br></div><div>gcc -DNDEBUG -Wreturn-type -c t.cpp<br><br></div><br></div><div class="gmail_quote">Given that some people compile Piglit with NDEBUG and some people compile it without, I think Tom's patches 2/3 and 3/3 are reasonable.<br>
</div></div></div>