https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90890

--- Comment #3 from Steve Kargl <sgk at troutmask dot apl.washington.edu> ---
On Sat, Jun 15, 2019 at 11:08:43PM +0000, bharat.mahajan at hotmail dot com
wrote:
> 
> I forgot to mention that code runs with no issues with ifort. Second, then why
> the following code works with gfortran?

The Fortran standard does not require a Fortran processor (i.e., 
the compiler) to detect and report that you are using an undefined
entity.

> program test
>     implicit  none
>     real, dimension(:), allocatable :: a    
>     integer :: b
>     a = [a, 2.0]

What value does 'a' have on the right side of the above
expression?

The correct way to write the above would have either
been to assign something to 'a' prior to using on the
RHS above or writing

   if (allocated(a)) a = [a, 2.0]

>     !b = -100
> end program test
> ---
> 
> I am not sure I would say 'a' is not defined.

The Fortran standard decides what is defined and undefined.

From F2018

   19.6.2 Variables that are always defined

   Zero-sized arrays and zero-length strings are always defined.

   19.6.3 Variables that are initially defined

   The following variables are initially defined:

     (1) variables specified to have initial values by DATA statements;
     (2) variables specified to have initial values by type declaration
         statements;
     (3) nonpointer default-initialized subcomponents of saved variables
         that do not have the ALLOCATABLE or POINTER attribute;
     (4) pointers specified to be initially associated with a variable
         that is initially defined;
     (5) variables that are always defined;
     (6) variables with the BIND attribute that are initialized by means
        other than Fortran.

   19.6.4 Variables that are initially undefined

   Variables that are not initially defined are initially undefined.

Your 'a' is undefined.

Reply via email to