aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2014-12-17 22:12:42 +0100
committerJanus Weil <janus@gcc.gnu.org>2014-12-17 22:12:42 +0100
commitf4e2df89707db4e673927962ca3a6fddf305b764 (patch)
tree41a3f61e02991c2970c39091972509fccea9fe47 /gcc
parent6c0c245e30e159720d62954a978ec2eb4d526d88 (diff)
downloadgcc-f4e2df89707db4e673927962ca3a6fddf305b764.zip
gcc-f4e2df89707db4e673927962ca3a6fddf305b764.tar.gz
gcc-f4e2df89707db4e673927962ca3a6fddf305b764.tar.bz2
re PR fortran/64173 ([F03] ICE involving procedure pointer component)
2014-12-17 Janus Weil <janus@gcc.gnu.org> PR fortran/64173 * trans-array.c (structure_alloc_comps): Do not nullify procedure pointer components. 2014-12-17 Janus Weil <janus@gcc.gnu.org> PR fortran/64173 * gfortran.dg/proc_ptr_comp_40.f90: New. From-SVN: r218834
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-array.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_comp_40.f9026
4 files changed, 38 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index edbe42a..067b133 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2014-12-17 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/64173
+ * trans-array.c (structure_alloc_comps): Do not nullify procedure
+ pointer components.
+
2014-12-17 Pierre-Marie de Rodat <derodat@adacore.com>
* trans-types.c (gfc_get_array_descr_info): Describe all Fortran arrays
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c
index e061dcf..67beab2 100644
--- a/gcc/fortran/trans-array.c
+++ b/gcc/fortran/trans-array.c
@@ -7774,7 +7774,7 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl,
break;
case NULLIFY_ALLOC_COMP:
- if (c->attr.pointer)
+ if (c->attr.pointer || c->attr.proc_pointer)
continue;
else if (c->attr.allocatable
&& (c->attr.dimension|| c->attr.codimension))
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 24c5143..2d88552 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-17 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/64173
+ * gfortran.dg/proc_ptr_comp_40.f90: New.
+
2014-12-17 H.J. Lu <hongjiu.lu@intel.com>
PR target/61296
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_comp_40.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_comp_40.f90
new file mode 100644
index 0000000..07d0959
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_comp_40.f90
@@ -0,0 +1,26 @@
+! { dg-do compile }
+!
+! PR 64173: [F03] ICE involving procedure pointer component
+!
+! Contributed by Rich Townsend <townsend@astro.wisc.edu>
+
+ implicit none
+
+ type :: r_magnus_ivp_t
+ integer, allocatable :: jc
+ procedure(abscissa_), nopass, pointer :: abscissa_p
+ end type
+
+ abstract interface
+ function abscissa_ () result (x)
+ real, allocatable :: x(:)
+ end function
+ end interface
+
+contains
+
+ function doinit () result (iv)
+ type(r_magnus_ivp_t) :: iv
+ end function
+
+end