[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gcc-fortran
Subject:    [PATCH] Fix PR fortran/43793
From:       Steve Kargl <sgk () troutmask ! apl ! washington ! edu>
Date:       2010-04-24 18:37:01
Message-ID: 20100424183701.GA46364 () troutmask ! apl ! washington ! edu
[Download RAW message or body]

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

["pr43793.diff" (text/x-diff)]

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.  */


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic