https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79956
--- Comment #24 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
I think the warning about estat is a gcc bug.
Here is the function in its entirety:
void
execute_command_line_i4 (const char *command, GFC_LOGICAL_4 *wait,
GFC_INTEGER_4 *exitstat, GFC_INTEGER_4 *cmdstat,
char *cmdmsg, gfc_charlen_type command_len,
gfc_charlen_type cmdmsg_len)
{
bool w = wait ? *wait : true;
int estat, estat_initial, cstat;
if (exitstat)
estat_initial = estat = *exitstat;
execute_command_line (command, w, &estat, cmdstat ? &cstat : NULL,
cmdmsg, command_len, cmdmsg_len);
if (exitstat && estat != estat_initial)
*exitstat = estat;
if (cmdstat)
*cmdstat = cstat;
}
estat gets a value if exitstat is non-NULL. There is nothing
in the code that could legally change the value of exitstat,
and the value of estat is only used on the condition that
exitstat is non-NULL.
If anything, second test is unnecessary, and this could be
shortened to
if (exitstat)
estat_initial = estat = *exitstat;
execute_command_line (command, w, &estat, cmdstat ? &cstat : NULL,
cmdmsg, command_len, cmdmsg_len);
if (exitstat)
*exitstat = estat;
Does this fix the warning, by any chance? This would be quite
elegant :-)