Commit 7298eef3 by Francois-Xavier Coudert Committed by François-Xavier Coudert

re PR fortran/50540 (Internal Error: Can't convert UNKNOWN to INTEGER(4) (r178939))

	PR fortran/50540
	* resolve.c (resolve_forall_iterators): Transform internal errors
	to normal errors.
	* gfortran.dg/forall_16.f90: New test.

From-SVN: r181200
parent 9c63ca5a
2011-11-09 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
PR fortran/50540
* resolve.c (resolve_forall_iterators): Transform internal errors
to normal errors.
2011-11-09 Janus Weil <janus@gcc.gnu.org> 2011-11-09 Janus Weil <janus@gcc.gnu.org>
PR fortran/50960 PR fortran/50960
...@@ -8,7 +14,7 @@ ...@@ -8,7 +14,7 @@
be resolved again. be resolved again.
(resolve_fl_parameter): Make sure the symbol has a value. (resolve_fl_parameter): Make sure the symbol has a value.
2011-11-08 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> 2011-11-09 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
PR fortran/38718 PR fortran/38718
* intrinsic.c (add_functions): Allow dreal simplification. * intrinsic.c (add_functions): Allow dreal simplification.
......
...@@ -6427,14 +6427,14 @@ resolve_forall_iterators (gfc_forall_iterator *it) ...@@ -6427,14 +6427,14 @@ resolve_forall_iterators (gfc_forall_iterator *it)
gfc_error ("FORALL start expression at %L must be a scalar INTEGER", gfc_error ("FORALL start expression at %L must be a scalar INTEGER",
&iter->start->where); &iter->start->where);
if (iter->var->ts.kind != iter->start->ts.kind) if (iter->var->ts.kind != iter->start->ts.kind)
gfc_convert_type (iter->start, &iter->var->ts, 2); gfc_convert_type (iter->start, &iter->var->ts, 1);
if (gfc_resolve_expr (iter->end) == SUCCESS if (gfc_resolve_expr (iter->end) == SUCCESS
&& (iter->end->ts.type != BT_INTEGER || iter->end->rank != 0)) && (iter->end->ts.type != BT_INTEGER || iter->end->rank != 0))
gfc_error ("FORALL end expression at %L must be a scalar INTEGER", gfc_error ("FORALL end expression at %L must be a scalar INTEGER",
&iter->end->where); &iter->end->where);
if (iter->var->ts.kind != iter->end->ts.kind) if (iter->var->ts.kind != iter->end->ts.kind)
gfc_convert_type (iter->end, &iter->var->ts, 2); gfc_convert_type (iter->end, &iter->var->ts, 1);
if (gfc_resolve_expr (iter->stride) == SUCCESS) if (gfc_resolve_expr (iter->stride) == SUCCESS)
{ {
...@@ -6448,7 +6448,7 @@ resolve_forall_iterators (gfc_forall_iterator *it) ...@@ -6448,7 +6448,7 @@ resolve_forall_iterators (gfc_forall_iterator *it)
&iter->stride->where); &iter->stride->where);
} }
if (iter->var->ts.kind != iter->stride->ts.kind) if (iter->var->ts.kind != iter->stride->ts.kind)
gfc_convert_type (iter->stride, &iter->var->ts, 2); gfc_convert_type (iter->stride, &iter->var->ts, 1);
} }
for (iter = it; iter; iter = iter->next) for (iter = it; iter; iter = iter->next)
......
2011-11-09 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> 2011-11-09 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
PR fortran/50540
* gfortran.dg/forall_16.f90: New test.
2011-11-09 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
PR fortran/38718 PR fortran/38718
* gfortran.dg/initialization_29.f90: Expand test. * gfortran.dg/initialization_29.f90: Expand test.
......
! { dg-do compile }
! PR fortran/50540
!
implicit none
integer i,dest(10)
forall (i=2:ix) dest(i)=i ! { dg-error "has no IMPLICIT type" }
end
! { dg-excess-errors "Can't convert UNKNOWN to INTEGER" }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment