On Tue, May 24 2022, Johannes Schindelin wrote: > Hi Junio, > > On Tue, 24 May 2022, Junio C Hamano wrote: > >> The "clear slot->finished", by the way, is what I think is the right >> thing to do, especially that the objective is to squelch the false >> positive warning from a new compiler. If there is a way to annotate >> the line for the compiler to tell it not to warn about it, that would >> have been even better. > > We could do something like this: > > -- snip -- > diff --git a/http.c b/http.c > index b08795715f8a..2ac8d51d3668 100644 > --- a/http.c > +++ b/http.c > @@ -1365,7 +1365,14 @@ void run_active_slot(struct active_request_slot *slot) > struct timeval select_timeout; > int finished = 0; > > +#if __GNUC__ >= 12 > +#pragma GCC diagnostic push > +#pragma GCC diagnostic ignored "-Wdangling-pointer" > +#endif > slot->finished = &finished; > +#if __GNUC__ >= 12 > +#pragma GCC diagnostic pop > +#endif > while (!finished) { > step_active_slots(); > -- snap -- > > That's quite ugly, though. And what's worse, it is pretty unreadable, too. Unfortunately that sort of thing is a logic error as clang, ICC and probably others are on a mission to make __GNUC__ as useless as possible: https://stackoverflow.com/questions/38499462/how-to-tell-clang-to-stop-pretending-to-be-other-compilers I think it *might* work in practice though, my local clang claims to be gcc 4, so maybe everyone faking it stops at a low enough version? But did you spot 9c539d1027d (config.mak.dev: alternative workaround to gcc 12 warning in http.c, 2022-04-15)? We already disable this file-wide in config.mak.dev, but I didn't check if the Windows code was using that (or if you were targeting those without DEVELOPER=1). We could move that to thake main Makefile, but then we'd have to call detect-compiler there. I have some local patches to do something like that if there's interest (rather, to bootstrap compilation by compiling a C object and getting the macro values, instead of relying on that shellscript).