https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87038
--- Comment #10 from Segher Boessenkool <segher at gcc dot gnu.org> --- The initialisation (the call to f1) could have a side effect, but the a==1 case skips that. GCC is right to warn here in my opinion.