[PATCH] NoReturn Warning: Non-Void Return Type
Michael Bao
mike.h.bao at gmail.com
Sun Jan 5 17:17:52 PST 2014
On Sun, Jan 5, 2014 at 7:30 PM, David Blaikie <dblaikie at gmail.com> wrote:
>
> Is this an existing warning in another compiler?
The only other compiler I have access to right now is GCC 4.8 and from
what I can tell they do not have this warning. However, their docs say
that it does not make sense for a noreturn function to have a return
type other than void
(http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Function-Attributes.html).
> Is it finding bugs?
I can't say for sure if this particular would find bugs or not, but I
think marking a noreturn function as having a return type could
potentially be confusing?.
> How does this interact with virtual functions? (what if I'm overriding a
> non-void non-noreturn function with a noreturn function?)
If I understand your question correctly...I quickly made up this example:
class TestClass {
virtual int cfoo() {
return 0;
}
};
class TestClass2: public TestClass {
__attribute__((noreturn)) virtual int cfoo() {
while(1){}
return 1;
}
};
The warning is emitted on the cfoo() function in TestClass2 as expected.
Thanks!
More information about the cfe-commits
mailing list