diff options
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0116-2011-04-13-Paul-Thomas-pault-gcc.gnu.org.patch')
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0116-2011-04-13-Paul-Thomas-pault-gcc.gnu.org.patch | 182 |
1 files changed, 0 insertions, 182 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0116-2011-04-13-Paul-Thomas-pault-gcc.gnu.org.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0116-2011-04-13-Paul-Thomas-pault-gcc.gnu.org.patch deleted file mode 100644 index 6d6650ea1..000000000 --- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0116-2011-04-13-Paul-Thomas-pault-gcc.gnu.org.patch +++ /dev/null @@ -1,182 +0,0 @@ -From 348c7b9400ed5fe0d8c3c077f8223ca359bed036 Mon Sep 17 00:00:00 2001 -From: pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4> -Date: Wed, 13 Apr 2011 18:38:17 +0000 -Subject: [PATCH] 2011-04-13 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/48360 - PR fortran/48456 - * trans-array.c (get_std_lbound): For derived type variables - return array valued component lbound. - -2011-04-13 Paul Thomas <pault@gcc.gnu.org> - - PR fortran/48360 - PR fortran/48456 - * gfortran.dg/realloc_on_assign_6.f03: New test. - -git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172390 138bc75d-0d04-0410-961f-82ee72b054a4 - -index ac08c42..3d4a52a 100644 ---- a/gcc/fortran/trans-array.c -+++ b/gcc/fortran/trans-array.c -@@ -6707,6 +6707,8 @@ get_std_lbound (gfc_expr *expr, tree desc, int dim, bool assumed_size) - tree stride; - tree cond, cond1, cond3, cond4; - tree tmp; -+ gfc_ref *ref; -+ - if (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc))) - { - tmp = gfc_rank_cst[dim]; -@@ -6740,6 +6742,14 @@ get_std_lbound (gfc_expr *expr, tree desc, int dim, bool assumed_size) - else if (expr->expr_type == EXPR_VARIABLE) - { - tmp = TREE_TYPE (expr->symtree->n.sym->backend_decl); -+ for (ref = expr->ref; ref; ref = ref->next) -+ { -+ if (ref->type == REF_COMPONENT -+ && ref->u.c.component->as -+ && ref->next -+ && ref->next->u.ar.type == AR_FULL) -+ tmp = TREE_TYPE (ref->u.c.component->backend_decl); -+ } - return GFC_TYPE_ARRAY_LBOUND(tmp, dim); - } - else if (expr->expr_type == EXPR_FUNCTION) -new file mode 100644 -index 0000000..7c170eb ---- /dev/null -+++ b/gcc/testsuite/gfortran.dg/realloc_on_assign_6.f03 -@@ -0,0 +1,129 @@ -+! { dg-do compile } -+! Test the fix for PR48456 and PR48360 in which the backend -+! declarations for components were not located in the automatic -+! reallocation on assignments, thereby causing ICEs. -+! -+! Contributed by Keith Refson <krefson@googlemail.com> -+! and Douglas Foulds <mixnmaster@gmail.com> -+! -+! This is PR48360 -+ -+module m -+ type mm -+ real, dimension(3,3) :: h0 -+ end type mm -+end module m -+ -+module gf33 -+ -+ real, allocatable, save, dimension(:,:) :: hmat -+ -+contains -+ subroutine assignit -+ -+ use m -+ implicit none -+ -+ type(mm) :: mmv -+ -+ hmat = mmv%h0 -+ end subroutine assignit -+end module gf33 -+ -+! This is PR48456 -+ -+module custom_type -+ -+integer, parameter :: dp = kind(0.d0) -+ -+type :: my_type_sub -+ real(dp), dimension(5) :: some_vector -+end type my_type_sub -+ -+type :: my_type -+ type(my_type_sub) :: some_element -+end type my_type -+ -+end module custom_type -+ -+module custom_interfaces -+ -+interface -+ subroutine store_data_subroutine(vec_size) -+ implicit none -+ integer, intent(in) :: vec_size -+ integer :: k -+ end subroutine store_data_subroutine -+end interface -+ -+end module custom_interfaces -+ -+module store_data_test -+ -+use custom_type -+ -+save -+type(my_type), dimension(:), allocatable :: some_type_to_save -+ -+end module store_data_test -+ -+program test -+ -+use store_data_test -+ -+integer :: vec_size -+ -+vec_size = 2 -+ -+call store_data_subroutine(vec_size) -+call print_after_transfer() -+ -+end program test -+ -+subroutine store_data_subroutine(vec_size) -+ -+use custom_type -+use store_data_test -+ -+implicit none -+ -+integer, intent(in) :: vec_size -+integer :: k -+ -+allocate(some_type_to_save(vec_size)) -+ -+do k = 1,vec_size -+ -+ some_type_to_save(k)%some_element%some_vector(1) = 1.0_dp -+ some_type_to_save(k)%some_element%some_vector(2) = 2.0_dp -+ some_type_to_save(k)%some_element%some_vector(3) = 3.0_dp -+ some_type_to_save(k)%some_element%some_vector(4) = 4.0_dp -+ some_type_to_save(k)%some_element%some_vector(5) = 5.0_dp -+ -+end do -+ -+end subroutine store_data_subroutine -+ -+subroutine print_after_transfer() -+ -+use custom_type -+use store_data_test -+ -+implicit none -+ -+real(dp), dimension(:), allocatable :: C_vec -+integer :: k -+ -+allocate(C_vec(5)) -+ -+do k = 1,size(some_type_to_save) -+ -+ C_vec = some_type_to_save(k)%some_element%some_vector -+ print *, "C_vec", C_vec -+ -+end do -+ -+end subroutine print_after_transfer -+! { dg-final { cleanup-modules "m gf33" } } -+! { dg-final { cleanup-modules "custom_type custom_interfaces" } } -+! { dg-final { cleanup-modules "store_data_test" } } --- -1.7.0.4 - |