mirror of git://gcc.gnu.org/git/gcc.git
re PR fortran/71730 (ICE when character length specification uses an undefined variable)
2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/71730 * decl.c (char_len_param_value): Check return value of gfc_reduce_init_expr(). 2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/71730 * gfortran.dg/pr71730.f90: New test. * gfortran.dg/bounds_check_strlen_2.f90: Fix invalid code. * gfortran.dg/array_constructor_27.f03: Update dg-error message. * gfortran.dg/array_constructor_26.f03: Ditto. From-SVN: r238904
This commit is contained in:
parent
12f549f4a4
commit
fb42421ef0
|
|
@ -1,3 +1,9 @@
|
||||||
|
2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/71730
|
||||||
|
* decl.c (char_len_param_value): Check return value of
|
||||||
|
gfc_reduce_init_expr().
|
||||||
|
|
||||||
2016-07-29 Dominik Vogt <vogt@linux.vnet.ibm.com>
|
2016-07-29 Dominik Vogt <vogt@linux.vnet.ibm.com>
|
||||||
|
|
||||||
* trans-array.c (gfc_conv_array_ref): Fix allocation of diagnostic
|
* trans-array.c (gfc_conv_array_ref): Fix allocation of diagnostic
|
||||||
|
|
|
||||||
|
|
@ -906,6 +906,7 @@ char_len_param_value (gfc_expr **expr, bool *deferred)
|
||||||
goto syntax;
|
goto syntax;
|
||||||
else if ((*expr)->expr_type == EXPR_VARIABLE)
|
else if ((*expr)->expr_type == EXPR_VARIABLE)
|
||||||
{
|
{
|
||||||
|
bool t;
|
||||||
gfc_expr *e;
|
gfc_expr *e;
|
||||||
|
|
||||||
e = gfc_copy_expr (*expr);
|
e = gfc_copy_expr (*expr);
|
||||||
|
|
@ -917,7 +918,15 @@ char_len_param_value (gfc_expr **expr, bool *deferred)
|
||||||
&& e->ref->u.ar.dimen_type[0] == DIMEN_RANGE)
|
&& e->ref->u.ar.dimen_type[0] == DIMEN_RANGE)
|
||||||
goto syntax;
|
goto syntax;
|
||||||
|
|
||||||
gfc_reduce_init_expr (e);
|
t = gfc_reduce_init_expr (e);
|
||||||
|
|
||||||
|
if (!t && (e->ts.type == BT_UNKNOWN
|
||||||
|
&& e->symtree->n.sym->attr.untyped == 1
|
||||||
|
&& e->symtree->n.sym->ns->seen_implicit_none == 1))
|
||||||
|
{
|
||||||
|
gfc_free_expr (e);
|
||||||
|
goto syntax;
|
||||||
|
}
|
||||||
|
|
||||||
if ((e->ref && e->ref->type == REF_ARRAY
|
if ((e->ref && e->ref->type == REF_ARRAY
|
||||||
&& e->ref->u.ar.type != AR_ELEMENT)
|
&& e->ref->u.ar.type != AR_ELEMENT)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,11 @@
|
||||||
|
2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/71730
|
||||||
|
* gfortran.dg/pr71730.f90: New test.
|
||||||
|
* gfortran.dg/bounds_check_strlen_2.f90: Fix invalid code.
|
||||||
|
* gfortran.dg/array_constructor_27.f03: Update dg-error message.
|
||||||
|
* gfortran.dg/array_constructor_26.f03: Ditto.
|
||||||
|
|
||||||
2016-07-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
|
2016-07-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
|
||||||
|
|
||||||
* g++.dg/pr70098.C: Remove XFAIL for powerpc64_no_dm.
|
* g++.dg/pr70098.C: Remove XFAIL for powerpc64_no_dm.
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ MODULE WinData
|
||||||
INTEGER (1), PARAMETER :: MAXFLD = 25_1, MAXHED = 5_1, MAXCHR = 80_1
|
INTEGER (1), PARAMETER :: MAXFLD = 25_1, MAXHED = 5_1, MAXCHR = 80_1
|
||||||
integer :: i
|
integer :: i
|
||||||
TYPE TWindowData
|
TYPE TWindowData
|
||||||
CHARACTER (MAX_FLD_HED, 1) :: DWFdHd(MAXFLD) = [(" ", i = 1, MAXFLD)]
|
CHARACTER (MAX_FLD_HED, 1) :: DWFdHd(MAXFLD) = [(" ", i = 1, MAXFLD)] ! { dg-error "Scalar INTEGER expression" }
|
||||||
! { dg-error "specification expression" "" { target *-*-* } 13 }
|
|
||||||
END TYPE TWindowData
|
END TYPE TWindowData
|
||||||
END MODULE WinData
|
END MODULE WinData
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,7 @@
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
type t
|
type t
|
||||||
character (a) :: arr (1) = [ "a" ]
|
character (a) :: arr (1) = [ "a" ] ! { dg-error "Scalar INTEGER expression" }
|
||||||
! { dg-error "specification expression" "" { target *-*-* } 11 }
|
|
||||||
end type t
|
end type t
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,8 @@ CONTAINS
|
||||||
|
|
||||||
SUBROUTINE test (str, n)
|
SUBROUTINE test (str, n)
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
CHARACTER(len=n) :: str
|
|
||||||
INTEGER :: n
|
INTEGER :: n
|
||||||
|
CHARACTER(len=n) :: str
|
||||||
END SUBROUTINE test
|
END SUBROUTINE test
|
||||||
|
|
||||||
SUBROUTINE test2 (str)
|
SUBROUTINE test2 (str)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
! { dg-do compile }
|
||||||
|
subroutine foo
|
||||||
|
implicit none
|
||||||
|
character(len=bar) :: a ! { dg-error "Scalar INTEGER expression" }
|
||||||
|
end subroutine foo
|
||||||
Loading…
Reference in New Issue