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: [RFC, Fortran, (pr66775)] Allocatable function result


Yes, it should be closed.  When I asked you to open it,
I thought the issue was a corner case in your patch.

-- 
steve

On Fri, Jul 10, 2015 at 11:44:32AM +0200, Andre Vehreschild wrote:
> 
> this means that pr66775 is to be closed as resolved invalid, because the
> current implementation is alright, but only the program to compile is garbage.
> Ok, suits me.
> 
> - Andre
> 
> On Thu, 9 Jul 2015 12:41:31 -0700
> Steve Kargl <sgk@troutmask.apl.washington.edu> wrote:
> 
> > On Thu, Jul 09, 2015 at 08:59:08PM +0200, Andre Vehreschild wrote:
> > > Hi Steve,
> > > 
> > > Thanks for your knowledge. Can you support your statement that an
> > > allocatable function has to return an allocated object by a part of the
> > > standard? I totally agree with you that this code is ill-designed, but IMO
> > > is it not the task of the compiler to address ill design. The compiler has
> > > to comply to the standard and the standard allows allocatable objects to be
> > > unallocated. So why has the result of a function be allocated always?
> > > 
> > > Regards,
> > > Andre
> > > 
> > 
> > I think the following excerpts from F2008 are the relevant
> > clauses, especially the 2nd to last sentence in the excerpt
> > from 12.6.2.2.
> > 
> > !  12.5.3
> > !
> > !  When execution of the function is complete, the value of
> > !  the function result is available for use in the expression
> > !  that caused the function to be invoked.
> > !
> > !  12.6.2.2
> > !
> > !  If RESULT appears, the name of the result variable of the
> > !  function is result-name and all occurrences of the function
> > !  name in execution-part statements in its scope refer to the
> > !  function itself.  If RESULT does not appear, the name of the
> > !  result variable is function-name and all occurrences of the
> > !  function name in execution-part statements in its scope are
> > !  references to the result variable.  The characteristics (12.3.3)
> > !  of the function result are those of the result variable.  On
> > !  completion of execution of the function, the value returned is
> > !  that of its result variable.  If the function result is a pointer,
> > !  the shape of the value returned by the function is determined by
> > !  the shape of the result variable when the execution of the function
> > !  is completed.  If the result variable is not a pointer, its value
> > !  shall be defined by the function.  If the function result is a
> > !  pointer, on return the pointer association status of the result
> > !  variable shall not be undefined.
> > 
> 
> 
> -- 
> Andre Vehreschild * Email: vehre ad gmx dot de 

-- 
Steve


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