[PATCH] Fortran: make STAT/LSTAT/FSTAT intrinsics generic [PR82480]
Harald Anlauf
anlauf@gmx.de
Tue Sep 9 19:49:54 GMT 2025
On 9/9/25 21:41, Jakub Jelinek wrote:
> On Tue, Sep 09, 2025 at 09:32:41PM +0200, Harald Anlauf wrote:
>> Running the related tests under valgrind did not reveal anything.
>> The maybe-uninitialized errors are bogus.
>
> They aren't, because the compiler doesn't know that those 17 or how many
> calls in between
> switch (code->resolved_isym->id)
> and
> if (code->resolved_isym->id == GFC_ISYM_FSTAT)
> later on don't change code->resolved_isym or code->resolved_isym->id
> (which is passed to the function, so escaped, any function compiler doesn't
> know anything about could have access to that through global variables in
> theory).
Oh. Coming from Fortran, I did not consider that anyone would write
such code (except when doing I/O or communication)...
> I think if the code did
> auto id = code->resolved_isym->id;
> switch (id)
> {
> case GFC_ISYM_FSTAT:
> ...
> break;
> case GFC_ISYM_LSTAT:
> case GFC_ISYM_STAT:
> ...
> break;
> default:
> gcc_unreachable ();
> }
> ...
> switch (id)
> ...
> if (id == GFC_ISYM_FSTAT)
> tmp = build_call_expr_loc (input_location, tmp, 3, unit, vals,
> stat ? arg3 : null_pointer_node);
> else
> tmp = build_call_expr_loc (input_location, tmp, 4, name, vals,
> stat ? arg3 : null_pointer_node, slen);
> then it wouldn't have the uninit warnings.
>
> Jakub
>
>
I see. The corresponding patch would have been slightly longer...
More information about the Fortran
mailing list