From: Craig Burley Date: Mon, 3 Nov 1997 06:04:01 +0000 (+0000) Subject: Important patch from Burley. X-Git-Tag: releases/egcs-1.0.0~175 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b1d0fc355df53f68cac6172578cdf4a462170531;p=thirdparty%2Fgcc.git Important patch from Burley. From-SVN: r16289 --- diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index 9831a6742768..174a15ffe827 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,3 +1,13 @@ +Fri Oct 10 13:00:48 1997 Craig Burley + + * ste.c (ffeste_begin_iterdo_): Fix loop setup so iteration + variable is modified only after the #iterations is calculated; + otherwise if the iteration variable is aliased to any of the + operands in the start, end, or increment expressions, the + wrong #iterations might be calculated. + + * com.c (ffecom_save_tree): Fix indentation. + Mon Sep 29 16:18:21 1997 Craig Burley * stu.c (ffestu_list_exec_transition_, diff --git a/gcc/f/com.c b/gcc/f/com.c index e53190abbbbc..99fbcc30d3ce 100644 --- a/gcc/f/com.c +++ b/gcc/f/com.c @@ -13293,7 +13293,8 @@ ffecom_return_expr (ffebld expr) /* Do save_expr only if tree is not error_mark_node. */ #if FFECOM_targetCURRENT == FFECOM_targetGCC -tree ffecom_save_tree (tree t) +tree +ffecom_save_tree (tree t) { return save_expr (t); } diff --git a/gcc/f/news.texi b/gcc/f/news.texi index b9f01423eacb..411ed7054697 100644 --- a/gcc/f/news.texi +++ b/gcc/f/news.texi @@ -5,7 +5,7 @@ @c The text of this file appears in the file BUGS @c in the G77 distribution, as well as in the G77 manual. -@c 1997-09-09 +@c 1997-10-10 @ifclear NEWSONLY @node News @@ -24,6 +24,47 @@ diagnostics, internal improvements, and miscellany. This order is not strict---for example, some items involve a combination of these elements. +@heading In 0.5.22: +@itemize @bullet +@item +Fix code generation for iterative @code{DO} loops that +have one or more references to the iteration variable, +or to aliases of it, in their control expressions. +For example, @samp{DO 10 J=2,J} now is compiled correctly. + +@item +Fix a compiler crash involving optimization of +certain complicated expressions involving @code{COMPLEX} +arithmetic (especially multiplication). + +@item +Rename the @code{gcc} keyword @code{restrict} to +@code{__restrict__}, to avoid rejecting valid, existing, +C programs. +Support for @code{restrict} is now more like support +for @code{complex}. + +@item +Fix @code{DTime} intrinsic so as not to truncate +results to integer values (on some systems). + +@item +Improve diagnostic messages from @code{libf2c} +so it is more likely that the printing of the +active format string is limited to the string, +with no trailing garbage being printed. + +(Unlike @code{f2c}, @code{g77} does not append +a null byte to its compiled form of every +format string specified via a @code{FORMAT} statement. +However, @code{f2c} would exhibit the problem +anyway for a statement like @samp{PRINT '(I)garbage', 1} +by printing @samp{(I)garbage} as the format string.) + +@item +Upgrade to @code{libf2c} as of 1997-09-23. +@end itemize + @heading In 0.5.21: @itemize @bullet @item diff --git a/gcc/f/ste.c b/gcc/f/ste.c index a5e9757cca39..31ae6a4b2a32 100644 --- a/gcc/f/ste.c +++ b/gcc/f/ste.c @@ -395,12 +395,11 @@ ffeste_begin_iterdo_ (ffestw block, tree *xtvar, tree *xtincr, /* Do the initial assignment into the DO var. */ - expr = ffecom_modify (void_type_node, tvar, tstart); - expand_expr_stmt (expr); + tstart = ffecom_save_tree (tstart); expr = ffecom_2 (MINUS_EXPR, TREE_TYPE (tvar), tend, - TREE_CONSTANT (tstart) ? tstart : tvar); + tstart); if (!ffe_is_onetrip ()) { @@ -439,6 +438,9 @@ ffeste_begin_iterdo_ (ffestw block, tree *xtvar, tree *xtincr, expr = ffecom_modify (void_type_node, niters, expr); expand_expr_stmt (expr); + expr = ffecom_modify (void_type_node, tvar, tstart); + expand_expr_stmt (expr); + if (block == NULL) expand_start_loop_continue_elsewhere (0); else