[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