diff options
author | Craig Burley <burley@gnu.ai.mit.edu> | 1997-11-03 06:07:04 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1997-11-02 23:07:04 -0700 |
commit | a2977d2db3aaf1a3912922a28e513baaf7e2e8a4 (patch) | |
tree | b036c2c43d5fce9847860cef2ff7d2a6aa09f252 | |
parent | af75269882c389f1abce41e732b27fdfedba1131 (diff) | |
download | gcc-a2977d2db3aaf1a3912922a28e513baaf7e2e8a4.zip gcc-a2977d2db3aaf1a3912922a28e513baaf7e2e8a4.tar.gz gcc-a2977d2db3aaf1a3912922a28e513baaf7e2e8a4.tar.bz2 |
Important patch from Burley.
From-SVN: r16291
-rw-r--r-- | gcc/f/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/f/com.c | 3 | ||||
-rw-r--r-- | gcc/f/news.texi | 43 | ||||
-rw-r--r-- | gcc/f/ste.c | 8 |
4 files changed, 59 insertions, 5 deletions
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index 9831a67..174a15f 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,3 +1,13 @@ +Fri Oct 10 13:00:48 1997 Craig Burley <burley@gnu.ai.mit.edu> + + * 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 <burley@gnu.ai.mit.edu> * stu.c (ffestu_list_exec_transition_, diff --git a/gcc/f/com.c b/gcc/f/com.c index e53190a..99fbcc3 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 b9f0142..411ed70 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 a5e9757..31ae6a4 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 |