re PR fortran/80668 (wrong error message with -finit-derived)
2017-05-17 Fritz Reese <fritzoreese@gmail.com> PR fortran/80668 gcc/fortran/ChangeLog: PR fortran/80668 * expr.c (component_initializer): Don't generate initializers for pointer components. * invoke.texi (-finit-derived): Document. gcc/testsuite/ChangeLog: PR fortran/80668 * gfortran.dg/pr80668.f90: New. From-SVN: r248158
This commit is contained in:
parent
3ca8120f64
commit
e5b1f5a1d1
5 changed files with 49 additions and 2 deletions
|
@ -1,3 +1,10 @@
|
|||
2017-05-17 Fritz Reese <fritzoreese@gmail.com>
|
||||
|
||||
PR fortran/80668
|
||||
* expr.c (component_initializer): Don't generate initializers for
|
||||
pointer components.
|
||||
* invoke.texi (-finit-derived): Document.
|
||||
|
||||
2017-05-16 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/80554
|
||||
|
|
|
@ -4280,9 +4280,13 @@ component_initializer (gfc_typespec *ts, gfc_component *c, bool generate)
|
|||
{
|
||||
gfc_expr *init = NULL;
|
||||
|
||||
/* See if we can find the initializer immediately. */
|
||||
/* See if we can find the initializer immediately.
|
||||
Some components should never get initializers. */
|
||||
if (c->initializer || !generate
|
||||
|| (ts->type == BT_CLASS && !c->attr.allocatable))
|
||||
|| (ts->type == BT_CLASS && !c->attr.allocatable)
|
||||
|| c->attr.pointer
|
||||
|| c->attr.class_pointer
|
||||
|| c->attr.proc_pointer)
|
||||
return c->initializer;
|
||||
|
||||
/* Recursively handle derived type components. */
|
||||
|
|
|
@ -1665,6 +1665,8 @@ according to these flags only with @option{-finit-derived}. These options do
|
|||
not initialize
|
||||
@itemize @bullet
|
||||
@item
|
||||
objects with the POINTER attribute
|
||||
@item
|
||||
allocatable arrays
|
||||
@item
|
||||
variables that appear in an @code{EQUIVALENCE} statement.
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2017-05-17 Fritz Reese <fritzoreese@gmail.com>
|
||||
|
||||
PR fortran/80668
|
||||
* gfortran.dg/pr80668.f90: New.
|
||||
|
||||
2017-05-17 Peter Bergner <bergner@vnet.ibm.com>
|
||||
|
||||
PR middle-end/80775
|
||||
|
|
29
gcc/testsuite/gfortran.dg/pr80668.f90
Normal file
29
gcc/testsuite/gfortran.dg/pr80668.f90
Normal file
|
@ -0,0 +1,29 @@
|
|||
! { dg-do compile }
|
||||
! { dg-options "-finit-derived -finit-integer=12345678" }
|
||||
!
|
||||
! PR fortran/80668
|
||||
!
|
||||
! Test a regression where structure constructor expressions were created for
|
||||
! POINTER components with -finit-derived.
|
||||
!
|
||||
|
||||
MODULE pr80668
|
||||
IMPLICIT NONE
|
||||
TYPE :: dist_t
|
||||
INTEGER :: TYPE,nblks_loc,nblks
|
||||
INTEGER,DIMENSION(:),POINTER :: dist
|
||||
END TYPE dist_t
|
||||
|
||||
CONTAINS
|
||||
|
||||
SUBROUTINE hfx_new()
|
||||
TYPE(dist_t) :: dist
|
||||
integer,pointer :: bob
|
||||
CALL release_dist(dist, bob)
|
||||
END SUBROUTINE hfx_new
|
||||
|
||||
SUBROUTINE release_dist(dist,p)
|
||||
TYPE(dist_t) :: dist
|
||||
integer, pointer, intent(in) :: p
|
||||
END SUBROUTINE release_dist
|
||||
END MODULE
|
Loading…
Add table
Reference in a new issue