re PR libfortran/65234 (Output descriptor (*(1E15.7)) not accepted)
2015-04-21 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/65234 * io/format.c (parse_format_list): Set the seen_dd flag in all cases where a data descriptor has been seen. From-SVN: r222274
This commit is contained in:
parent
dfce59eba3
commit
72cb12b077
|
@ -1,3 +1,9 @@
|
||||||
|
2015-04-21 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR libgfortran/65234
|
||||||
|
* io/format.c (parse_format_list): Set the seen_dd flag in all
|
||||||
|
cases where a data descriptor has been seen.
|
||||||
|
|
||||||
2015-04-21 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
2015-04-21 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||||
|
|
||||||
PR libgfortran/56743
|
PR libgfortran/56743
|
||||||
|
|
|
@ -624,6 +624,7 @@ parse_format_list (st_parameter_dt *dtp, bool *seen_dd)
|
||||||
get_fnode (fmt, &head, &tail, FMT_LPAREN);
|
get_fnode (fmt, &head, &tail, FMT_LPAREN);
|
||||||
tail->repeat = -2; /* Signifies unlimited format. */
|
tail->repeat = -2; /* Signifies unlimited format. */
|
||||||
tail->u.child = parse_format_list (dtp, &seen_data_desc);
|
tail->u.child = parse_format_list (dtp, &seen_data_desc);
|
||||||
|
*seen_dd = seen_data_desc;
|
||||||
if (fmt->error != NULL)
|
if (fmt->error != NULL)
|
||||||
goto finished;
|
goto finished;
|
||||||
if (!seen_data_desc)
|
if (!seen_data_desc)
|
||||||
|
@ -851,6 +852,7 @@ parse_format_list (st_parameter_dt *dtp, bool *seen_dd)
|
||||||
switch (t)
|
switch (t)
|
||||||
{
|
{
|
||||||
case FMT_L:
|
case FMT_L:
|
||||||
|
*seen_dd = true;
|
||||||
t = format_lex (fmt);
|
t = format_lex (fmt);
|
||||||
if (t != FMT_POSINT)
|
if (t != FMT_POSINT)
|
||||||
{
|
{
|
||||||
|
@ -873,6 +875,7 @@ parse_format_list (st_parameter_dt *dtp, bool *seen_dd)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FMT_A:
|
case FMT_A:
|
||||||
|
*seen_dd = true;
|
||||||
t = format_lex (fmt);
|
t = format_lex (fmt);
|
||||||
if (t == FMT_ZERO)
|
if (t == FMT_ZERO)
|
||||||
{
|
{
|
||||||
|
@ -897,12 +900,14 @@ parse_format_list (st_parameter_dt *dtp, bool *seen_dd)
|
||||||
case FMT_G:
|
case FMT_G:
|
||||||
case FMT_EN:
|
case FMT_EN:
|
||||||
case FMT_ES:
|
case FMT_ES:
|
||||||
|
*seen_dd = true;
|
||||||
get_fnode (fmt, &head, &tail, t);
|
get_fnode (fmt, &head, &tail, t);
|
||||||
tail->repeat = repeat;
|
tail->repeat = repeat;
|
||||||
|
|
||||||
u = format_lex (fmt);
|
u = format_lex (fmt);
|
||||||
if (t == FMT_G && u == FMT_ZERO)
|
if (t == FMT_G && u == FMT_ZERO)
|
||||||
{
|
{
|
||||||
|
*seen_dd = true;
|
||||||
if (notification_std (GFC_STD_F2008) == NOTIFICATION_ERROR
|
if (notification_std (GFC_STD_F2008) == NOTIFICATION_ERROR
|
||||||
|| dtp->u.p.mode == READING)
|
|| dtp->u.p.mode == READING)
|
||||||
{
|
{
|
||||||
|
@ -928,6 +933,7 @@ parse_format_list (st_parameter_dt *dtp, bool *seen_dd)
|
||||||
}
|
}
|
||||||
if (t == FMT_F && dtp->u.p.mode == WRITING)
|
if (t == FMT_F && dtp->u.p.mode == WRITING)
|
||||||
{
|
{
|
||||||
|
*seen_dd = true;
|
||||||
if (u != FMT_POSINT && u != FMT_ZERO)
|
if (u != FMT_POSINT && u != FMT_ZERO)
|
||||||
{
|
{
|
||||||
fmt->error = nonneg_required;
|
fmt->error = nonneg_required;
|
||||||
|
@ -969,8 +975,10 @@ parse_format_list (st_parameter_dt *dtp, bool *seen_dd)
|
||||||
tail->u.real.e = -1;
|
tail->u.real.e = -1;
|
||||||
|
|
||||||
if (t2 == FMT_D || t2 == FMT_F)
|
if (t2 == FMT_D || t2 == FMT_F)
|
||||||
break;
|
{
|
||||||
|
*seen_dd = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/* Look for optional exponent */
|
/* Look for optional exponent */
|
||||||
t = format_lex (fmt);
|
t = format_lex (fmt);
|
||||||
|
@ -1011,6 +1019,7 @@ parse_format_list (st_parameter_dt *dtp, bool *seen_dd)
|
||||||
case FMT_B:
|
case FMT_B:
|
||||||
case FMT_O:
|
case FMT_O:
|
||||||
case FMT_Z:
|
case FMT_Z:
|
||||||
|
*seen_dd = true;
|
||||||
get_fnode (fmt, &head, &tail, t);
|
get_fnode (fmt, &head, &tail, t);
|
||||||
tail->repeat = repeat;
|
tail->repeat = repeat;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue