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]

[PATCH] Fix PR fortran/43793


The attached patch fixes the regression I caused with my
patch to PR fortran/30073.  It has been regtested on 
x86_64-*-freebsd.  OK for trunk and 4.5.1?

Yes, the testcase filename isn't in the normal descriptive 
format, but I couldn't think of a better name than the 
pr number.

2010-04-24  Steven G. Kargl  <kargl@gcc.gnu.org>

       PR fortran/30073
       PR fortran/43793
       * trans-array.c (gfc_trans_array_bound_check): Use TREE_CODE instead
       of mucking with a tree directly.

2010-04-24  Steven G. Kargl  <kargl@gcc.gnu.org>

       PR fortran/30073
       PR fortran/43793
       * gfortran.dg/pr43793.f90

-- 
Steve
Index: gcc/testsuite/gfortran.dg/pr43793.f90
===================================================================
--- gcc/testsuite/gfortran.dg/pr43793.f90	(revision 0)
+++ gcc/testsuite/gfortran.dg/pr43793.f90	(revision 0)
@@ -0,0 +1,23 @@
+! { dg-do compile }
+!
+! PR fortran/30073
+! PR fortran/43793
+!
+! Original code by Joost VandeVondele 
+! Reduced and corrected code by Steven G. Kargl
+!
+module fft_tools
+  implicit none
+  integer, parameter :: lp = 8
+contains
+  subroutine sparse_alltoall (rs, rq, rcount)
+    complex(kind=lp), dimension(:, :), pointer :: rs, rq
+    integer, dimension(:) :: rcount
+    integer :: pos
+    pos = 1
+    if (rcount(pos) /= 0) then
+       rq(1:rcount(pos),pos) = rs(1:rcount(pos),pos)
+    end if
+  end subroutine sparse_alltoall
+end module fft_tools
+! { dg-final { cleanup-modules "fft_tools" } }
Index: gcc/fortran/trans-array.c
===================================================================
--- gcc/fortran/trans-array.c	(revision 158688)
+++ gcc/fortran/trans-array.c	(working copy)
@@ -2336,7 +2336,7 @@ gfc_trans_array_bound_check (gfc_se * se
 	  name = "unnamed constant";
     }
 
-  if (descriptor->base.code != COMPONENT_REF)
+  if (TREE_CODE (descriptor) == VAR_DECL)
     name = IDENTIFIER_POINTER (DECL_NAME (descriptor));
 
   /* If upper bound is present, include both bounds in the error message.  */

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