From: Janus Weil Date: Fri, 14 Aug 2009 22:02:45 +0000 (+0200) Subject: re PR fortran/41070 (Error: Components of structure constructor '' at (1) are PRIVATE) X-Git-Tag: releases/gcc-4.5.0~4013 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a2a0778d2d66c0245deef5973390a6a76deca91b;p=thirdparty%2Fgcc.git re PR fortran/41070 (Error: Components of structure constructor '' at (1) are PRIVATE) 2009-08-14 Janus Weil PR fortran/41070 * resolve.c (resolve_structure_cons): Make sure that ts.u.derived is only used if type is BT_DERIVED. 2009-08-14 Janus Weil PR fortran/41070 * gfortran.dg/structure_constructor_10.f90: New. From-SVN: r150781 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index f48729e34b27..4f807eaf2991 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2009-08-14 Janus Weil + + PR fortran/41070 + * resolve.c (resolve_structure_cons): Make sure that ts.u.derived is + only used if type is BT_DERIVED. + 2009-08-13 Janus Weil PR fortran/40941 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 9baef621eac6..ff32ae6e21d1 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -830,8 +830,8 @@ resolve_structure_cons (gfc_expr *expr) /* See if the user is trying to invoke a structure constructor for one of the iso_c_binding derived types. */ - if (expr->ts.u.derived && expr->ts.u.derived->ts.is_iso_c && cons - && cons->expr != NULL) + if (expr->ts.type == BT_DERIVED && expr->ts.u.derived + && expr->ts.u.derived->ts.is_iso_c && cons && cons->expr != NULL) { gfc_error ("Components of structure constructor '%s' at %L are PRIVATE", expr->ts.u.derived->name, &(expr->where)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1a47faeef950..44329fb3c530 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-08-14 Janus Weil + + PR fortran/41070 + * gfortran.dg/structure_constructor_10.f90: New. + 2009-08-14 Olatunji Ruwase * gcc.dg/pragma-re-1.c: Supported on all platforms. diff --git a/gcc/testsuite/gfortran.dg/structure_constructor_10.f90 b/gcc/testsuite/gfortran.dg/structure_constructor_10.f90 new file mode 100644 index 000000000000..eed7fa3a9d27 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/structure_constructor_10.f90 @@ -0,0 +1,28 @@ +! { dg-do compile } +! +! PR 41070: [4.5 Regression] Error: Components of structure constructor '' at (1) are PRIVATE +! +! Contributed by Michael Richmond + +MODULE cdf_aux_mod +IMPLICIT NONE + +TYPE :: one_parameter + CHARACTER (8) :: name +END TYPE one_parameter + +TYPE :: the_distribution + CHARACTER (8) :: name +END TYPE the_distribution + +TYPE (the_distribution), PARAMETER :: the_beta = the_distribution('cdf_beta') +END MODULE cdf_aux_mod + +SUBROUTINE cdf_beta() + USE cdf_aux_mod + IMPLICIT NONE + CALL check_complements(the_beta%name) +END SUBROUTINE cdf_beta + +! { dg-final { cleanup-modules "cdf_aux_mod" } } +