re PR fortran/9263 (ICE caused by invalid PARAMETER in implied DO loop)

2003-04-11  Bud Davis <bdavis9659@comcast.net>

	PR Fortran/9263
	* gcc/f/data.c (ffedata_advance_): Check initial, final and
	increment values for INTEGER typeness.
	PR Fortran/1832
	* libf2c/libI77/iio.c (z_putc): Check for overflowing length
	of output string.
	* gcc/f/news.texi: Document these fixes.
	PR Fortran/9263
	* g77.f-torture/noncompile/9263.f: New test
	PR Fortran/1832
	* g77.f-torture/execute/1832.f: New test

From-SVN: r65481
This commit is contained in:
Bud Davis 2003-04-11 21:33:48 +00:00 committed by Toon Moene
parent 2ae5ae57ba
commit 62520b2004
8 changed files with 69 additions and 5 deletions

View File

@ -1,3 +1,10 @@
2003-04-11 Bud Davis <bdavis9659@comcast.net>
PR Fortran/9263
* gcc/f/data.c (ffedata_advance_): Check initial, final and
increment values for INTEGER typeness.
* gcc/f/news.texi: Document these fixes.
2003-03-27 Steven Bosscher <steven@gcc.gnu.org> 2003-03-27 Steven Bosscher <steven@gcc.gnu.org>
* ffe.texi: Don't mention dead file proj.c. * ffe.texi: Don't mention dead file proj.c.

View File

@ -1,5 +1,5 @@
/* data.c -- Implementation File (module.c template V1.0) /* data.c -- Implementation File (module.c template V1.0)
Copyright (C) 1995, 1996, 2002 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 2002, 2003 Free Software Foundation, Inc.
Contributed by James Craig Burley. Contributed by James Craig Burley.
This file is part of GNU Fortran. This file is part of GNU Fortran.
@ -591,13 +591,29 @@ tail_recurse: /* :::::::::::::::::::: */
assert (ffeinfo_kindtype (ffebld_info (itervar)) assert (ffeinfo_kindtype (ffebld_info (itervar))
== FFEINFO_kindtypeINTEGERDEFAULT); == FFEINFO_kindtypeINTEGERDEFAULT);
ffedata_stack_->itervar = ffebld_symter (itervar); ffedata_stack_->itervar = ffebld_symter (itervar);
if (ffeinfo_basictype (ffebld_info (start)) != FFEINFO_basictypeINTEGER)
{
ffebad_start (FFEBAD_DATA_EVAL);
ffest_ffebad_here_current_stmt (0);
ffebad_finish ();
ffedata_pop_ ();
ffedata_reported_error_ = TRUE;
return FALSE;
}
assert (ffeinfo_basictype (ffebld_info (start)) assert (ffeinfo_basictype (ffebld_info (start))
== FFEINFO_basictypeINTEGER); == FFEINFO_basictypeINTEGER);
assert (ffeinfo_kindtype (ffebld_info (start)) assert (ffeinfo_kindtype (ffebld_info (start))
== FFEINFO_kindtypeINTEGERDEFAULT); == FFEINFO_kindtypeINTEGERDEFAULT);
ffesymbol_set_value (ffedata_stack_->itervar, ffedata_eval_integer1_ (start)); ffesymbol_set_value (ffedata_stack_->itervar, ffedata_eval_integer1_ (start));
if (ffeinfo_basictype (ffebld_info (end)) != FFEINFO_basictypeINTEGER)
{
ffebad_start (FFEBAD_DATA_EVAL);
ffest_ffebad_here_current_stmt (0);
ffebad_finish ();
ffedata_pop_ ();
ffedata_reported_error_ = TRUE;
return FALSE;
}
assert (ffeinfo_basictype (ffebld_info (end)) assert (ffeinfo_basictype (ffebld_info (end))
== FFEINFO_basictypeINTEGER); == FFEINFO_basictypeINTEGER);
assert (ffeinfo_kindtype (ffebld_info (end)) assert (ffeinfo_kindtype (ffebld_info (end))
@ -608,6 +624,15 @@ tail_recurse: /* :::::::::::::::::::: */
ffedata_stack_->increment = 1; ffedata_stack_->increment = 1;
else else
{ {
if (ffeinfo_basictype (ffebld_info (incr)) != FFEINFO_basictypeINTEGER)
{
ffebad_start (FFEBAD_DATA_EVAL);
ffest_ffebad_here_current_stmt (0);
ffebad_finish ();
ffedata_pop_ ();
ffedata_reported_error_ = TRUE;
return FALSE;
}
assert (ffeinfo_basictype (ffebld_info (incr)) assert (ffeinfo_basictype (ffebld_info (incr))
== FFEINFO_basictypeINTEGER); == FFEINFO_basictypeINTEGER);
assert (ffeinfo_kindtype (ffebld_info (incr)) assert (ffeinfo_kindtype (ffebld_info (incr))

View File

@ -11,7 +11,7 @@
@c in the standalone derivations of this file (e.g. NEWS). @c in the standalone derivations of this file (e.g. NEWS).
@set copyrights-news 1995,1996,1997,1998,1999,2000,2001,2002,2003 @set copyrights-news 1995,1996,1997,1998,1999,2000,2001,2002,2003
@set last-update-news 2003-03-24 @set last-update-news 2003-04-11
@ifset DOC-NEWS @ifset DOC-NEWS
@include root.texi @include root.texi
@ -164,6 +164,8 @@ Nothing yet.
@item @item
Problem Reports fixed (in chronological order of submission): Problem Reports fixed (in chronological order of submission):
@table @code @table @code
@item 1832
-list directed i/o overflow hangs, -fbounds-check doesn't detect
@item 3924 @item 3924
g77 generates code which is rejected by GAS if COFF debugging info is g77 generates code which is rejected by GAS if COFF debugging info is
requested requested
@ -191,6 +193,8 @@ Incorrect output with 0-based array of characters
Double complex zero ** double precision number -> NaN instead of zero Double complex zero ** double precision number -> NaN instead of zero
@item 9038 @item 9038
-ffixed-line-length-none -x f77-cpp-input gives: Warning: unknown register name line-length-none -ffixed-line-length-none -x f77-cpp-input gives: Warning: unknown register name line-length-none
@item 9263
ICE caused by invalid PARAMETER in implied DO loop
@item 10197 @item 10197
Direct access files not unformatted by default Direct access files not unformatted by default
@end table @end table

View File

@ -1,3 +1,10 @@
2003-04-11 Bud Davis <bdavis9659@comcast.net>
PR Fortran/9263
* g77.f-torture/noncompile/9263.f: New test
PR Fortran/1832
* g77.f-torture/execute/1832.f: New test
2003-04-11 David Chad <davidc@freebsd.org> 2003-04-11 David Chad <davidc@freebsd.org>
Loren J. Rittle <ljrittle@acm.org> Loren J. Rittle <ljrittle@acm.org>

View File

@ -0,0 +1,8 @@
character*120 file
character*5 string
file = "c:/dos/adir/bdir/cdir/text.doc"
write(string, *) "a ", file
if (string .ne. ' a') call abort
C-- The leading space is normal for list-directed output
C-- "file" is not printed because it would overflow "string".
end

View File

@ -0,0 +1,7 @@
PARAMETER (Q=1)
PARAMETER (P=10)
INTEGER C(10),D(10),E(10),F(10)
DATA (C(I),I=1,P) /10*10/ ! TERMINAL NOT INTEGER
DATA (D(I),I=Q,10) /10*10/ ! START NOT INTEGER
DATA (E(I),I=1,10,Q) /10*10/ ! INCREMENT NOT INTEGER
END

View File

@ -1,3 +1,9 @@
2003-04-11 Bud Davis <bdavis9659@comcast.net>
PR Fortran/1832
* libf2c/libI77/iio.c (z_putc): Check for overflowing length
of output string.
2003-03-24 Bud Davis <bdavis9659@comcast.net> 2003-03-24 Bud Davis <bdavis9659@comcast.net>
PR fortran/10197 PR fortran/10197

View File

@ -21,7 +21,7 @@ z_getc (void)
void void
z_putc (int c) z_putc (int c)
{ {
if (f__icptr < f__icend && f__recpos++ < f__svic->icirlen) if (f__recpos++ < f__svic->icirlen && f__icptr < f__icend)
*f__icptr++ = c; *f__icptr++ = c;
} }
int int