This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: -fno-automatic option (PR 20592)


This option should not apply to RECURSIVE functions. It's ok for non-recursive functions because it's just making undefined behaviour implementation defined. However for RECURSIVE functions it breaks legal programs.

We'll have to think about that. On one hand, this option is mostly used for compatibility reasons by people using old code, with no recursive functions in it. So, do you think we should silently ignore the option for recursive functions, or do we need to error out ("-fno-automatic option cannot be used with recursive functions")?


+Treat each program unit as if the @code{SAVE} statement was specified for
+every local variable and array referenced in it. Does not affect common
+blocks. (Some Fortran compilers provide this option under the name
+@option{-static}.)

This isn't entirely accurate. It's the equivalent of adding a single "save" statement with no saved-entity-list. This is different because it only applies to "all allowed items in the same scoping unit" (Section 5.2.4). In particular it does not apply to automatic (aka variable size) objects. eg.

I was merely copy-pasting the g77 info doc. I'll try to come up with something better, along the lines you mention.


subroutine foo(n)
  integer n
  integer, dimension(n) :: a
  save
  a = 0;
end subroutine

"a" will not be given the SAVE attribute.

Yes, indeed. I don't know if your comment was only about the doc or the patch itself, but just in case: the -fno-automatic option does add the save attribute only to non-automatic variables (in fact, it uses the same code as for a single "save" statement with no saved-entity-list.


FX


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]