------- Comment #3 from pault at gcc dot gnu dot org  2007-07-09 22:40 -------
(In reply to comment #2)

Whilst I agree that this is a regession, it is so because an underlying bug is
exposed - in other words, r124541 is perfectly correct.

The following also fails:

program matrix

implicit none
real,dimension(2,2),parameter::c=reshape((/1,2,3,4/),(/2,2/))
real,dimension(2,2)::m

m=f()+c
m=c+f()
call sub(m+f())
call sub(c+m)
call sub(f()+c)
call sub(c+f())

contains

  function f()    
    implicit none
    real, dimension(2,2)::f
    f=0
  end function f

  subroutine sub(a)
    implicit none
    real, dimension(2,2)::a
    print *, a
  end subroutine sub

end program matrix

which was not affected by the above patch.

This fixes both versions of the bug:

Index: gcc/fortran/trans-array.c
===================================================================
*** gcc/fortran/trans-array.c   (revision 126461)
--- gcc/fortran/trans-array.c   (working copy)
*************** gfc_trans_array_constructor (gfc_loopinf
*** 1656,1661 ****
--- 1656,1673 ----

    /* See if the constructor determines the loop bounds.  */
    dynamic = false;
+
+   if (ss->expr->shape && loop->to[0] == NULL_TREE)
+     {
+       int n;
+       for (n = 0; n < ss->expr->rank; n++)
+       {
+         loop->to[n] = gfc_conv_mpz_to_tree (ss->expr->shape [n],
+                                             gfc_index_integer_kind);
+         loop->from[n] = gfc_index_zero_node;
+       }
+     }
+
    if (loop->to[0] == NULL_TREE)
      {
        mpz_t size;

Paul


-- 

pault at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |pault at gcc dot gnu dot org
                   |dot org                     |
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2007-07-09 06:01:16         |2007-07-09 22:40:38
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32682

Reply via email to