On Fri, Mar 29, 2019 at 06:51:54AM -0400, Frediano Ziglio wrote: > > > > Without the added abort(), it cannot know g_log(G_LOG_LEVEL_CRITICAL) > > will never return. > > > > Signed-off-by: Christophe Fergeau <[email protected]> > > I prefer the "for" way. But by the way, this is not telling the compiler > that spice_log (NOT g_log) is not returning but to call abort() after > spice_log.
Since abort() does not return, overall result is that the compiler won't
think code after spice_critical() can be reached.
> I don't think the compiler will warn that with that flag the function
> it not returning, is not clear why you need these changes.
> Optimization? I don't think that calling an additional function
> and jumping back to original flow would change much.
I'm fairly sure I got warnings during some experiments which led me to
these changes, but I haven't been able to get them now.
One testcase which warns without these changes:
#include "log.h"
#include "stdbool.h"
int main(int argc, char **argv)
{
switch(argc) {
case 1:
spice_critical("foo");
default:
return 0;
}
}
$ LC_ALL=C gcc -c $(pkg-config --cflags --libs glib-2.0 spice-protocol) -I
common -Wimplicit-fallthrough=5 ./fallthrough.c
In file included from ./fallthrough.c:1:
./fallthrough.c: In function 'main':
common/log.h:73:5: warning: this statement may fall through
[-Wimplicit-fallthrough=]
73 | spice_log(G_LOG_LEVEL_CRITICAL, SPICE_STRLOC, __FUNCTION__, ""
format, ## __VA_ARGS__); \
|
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./fallthrough.c:8:25: note: in expansion of macro 'spice_critical'
8 | spice_critical("foo");
| ^~~~~~~~~~~~~~
./fallthrough.c:9:17: note: here
9 | default:
| ^~~~~~~
(I can add this to the log)
Christophe
signature.asc
Description: PGP signature
_______________________________________________ Spice-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/spice-devel
