public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/97176] New: Cannot return deferred length strings when using -fno-automatic
@ 2020-09-23 10:01 jeremy at jeremysanders dot net
2020-09-23 16:43 ` [Bug fortran/97176] " kargl at gcc dot gnu.org
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: jeremy at jeremysanders dot net @ 2020-09-23 10:01 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97176
Bug ID: 97176
Summary: Cannot return deferred length strings when using
-fno-automatic
Product: gcc
Version: 10.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: jeremy at jeremysanders dot net
Target Milestone: ---
Created attachment 49261
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49261&action=edit
Test case
Functions returning deferred length strings return empty strings with the
-fno-automatic compiler option.
Please see the attached program (tested on trunk on godbolt.org).
$ gfortran testprog.f90
$ ./a.out
Hello, world!
$ gfortran -fno-automatic testprog.f90
$ ./a.out
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug fortran/97176] Cannot return deferred length strings when using -fno-automatic
2020-09-23 10:01 [Bug fortran/97176] New: Cannot return deferred length strings when using -fno-automatic jeremy at jeremysanders dot net
@ 2020-09-23 16:43 ` kargl at gcc dot gnu.org
2020-09-23 19:35 ` anlauf at gcc dot gnu.org
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: kargl at gcc dot gnu.org @ 2020-09-23 16:43 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97176
kargl at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kargl at gcc dot gnu.org
--- Comment #1 from kargl at gcc dot gnu.org ---
Workaround 1.
Don't use -fno-automatic if you use a RESULT variable.
Workaround 2.
Don't use a RESULT variable.
Workaround 3.
Explicitly give entities the SAVE attribute whereby your
testfunc() becomes
function testfunc(string) result(res)
character(:), allocatable, save :: res
character(*), intent(in) :: string
res = string
end function testfunc
which leads to the informative error message
% gfcx -o z a.f90 && ./z
a.f90:10:42:
10 | character(:), allocatable, save :: res
| 1
Error: RESULT attribute conflicts with SAVE attribute at (1)
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug fortran/97176] Cannot return deferred length strings when using -fno-automatic
2020-09-23 10:01 [Bug fortran/97176] New: Cannot return deferred length strings when using -fno-automatic jeremy at jeremysanders dot net
2020-09-23 16:43 ` [Bug fortran/97176] " kargl at gcc dot gnu.org
@ 2020-09-23 19:35 ` anlauf at gcc dot gnu.org
2020-09-24 6:44 ` jeremy at jeremysanders dot net
2020-10-05 12:23 ` dominiq at lps dot ens.fr
3 siblings, 0 replies; 5+ messages in thread
From: anlauf at gcc dot gnu.org @ 2020-09-23 19:35 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97176
--- Comment #2 from anlauf at gcc dot gnu.org ---
(In reply to kargl from comment #1)
> Workaround 3.
>
> Explicitly give entities the SAVE attribute whereby your
> testfunc() becomes
>
> function testfunc(string) result(res)
> character(:), allocatable, save :: res
> character(*), intent(in) :: string
> res = string
> end function testfunc
That is explicit standard violation.
Adding a blank SAVE statement in the function body seems to work as expected,
so a user who believes in -fno-automatic may call it a gfortran bug.
Personally, I'd recommend:
Workaround 4.
Never use -fno-automatic.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug fortran/97176] Cannot return deferred length strings when using -fno-automatic
2020-09-23 10:01 [Bug fortran/97176] New: Cannot return deferred length strings when using -fno-automatic jeremy at jeremysanders dot net
2020-09-23 16:43 ` [Bug fortran/97176] " kargl at gcc dot gnu.org
2020-09-23 19:35 ` anlauf at gcc dot gnu.org
@ 2020-09-24 6:44 ` jeremy at jeremysanders dot net
2020-10-05 12:23 ` dominiq at lps dot ens.fr
3 siblings, 0 replies; 5+ messages in thread
From: jeremy at jeremysanders dot net @ 2020-09-24 6:44 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97176
--- Comment #3 from Jeremy Sanders <jeremy at jeremysanders dot net> ---
I'm not using -fno-automatic out of choice, unfortunately (I'd never use it
otherwise). I maintaining part of a large software package which has this
switched on (for unclear reasons). It will require some testing to remove this
option.
What would be really useful is a warning in the manual which makes it clear
that it is a bad idea to use this option. This would help prevent people
switching it on without knowing that it breaks standards-conforming code.
Unless you know the fortran standard well, it just seems a minor code
generation option from the current docs. I'd be happy if this bug was closed
with a documentation update (or a warning is added for this case).
What about adding something like
"Use of this option is highly discouraged as it can break standard-conforming
code. Its use is only intended as a short-term fix for non-standard code."
?
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug fortran/97176] Cannot return deferred length strings when using -fno-automatic
2020-09-23 10:01 [Bug fortran/97176] New: Cannot return deferred length strings when using -fno-automatic jeremy at jeremysanders dot net
` (2 preceding siblings ...)
2020-09-24 6:44 ` jeremy at jeremysanders dot net
@ 2020-10-05 12:23 ` dominiq at lps dot ens.fr
3 siblings, 0 replies; 5+ messages in thread
From: dominiq at lps dot ens.fr @ 2020-10-05 12:23 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97176
Dominique d'Humieres <dominiq at lps dot ens.fr> changed:
What |Removed |Added
----------------------------------------------------------------------------
Severity|normal |enhancement
Last reconfirmed| |2020-10-05
Priority|P3 |P5
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-10-05 12:23 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-23 10:01 [Bug fortran/97176] New: Cannot return deferred length strings when using -fno-automatic jeremy at jeremysanders dot net
2020-09-23 16:43 ` [Bug fortran/97176] " kargl at gcc dot gnu.org
2020-09-23 19:35 ` anlauf at gcc dot gnu.org
2020-09-24 6:44 ` jeremy at jeremysanders dot net
2020-10-05 12:23 ` dominiq at lps dot ens.fr
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).