aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorCraig Burley <burley@gnu.ai.mit.edu>1997-11-03 06:07:04 +0000
committerJeff Law <law@gcc.gnu.org>1997-11-02 23:07:04 -0700
commita2977d2db3aaf1a3912922a28e513baaf7e2e8a4 (patch)
treeb036c2c43d5fce9847860cef2ff7d2a6aa09f252 /gcc
parentaf75269882c389f1abce41e732b27fdfedba1131 (diff)
downloadgcc-a2977d2db3aaf1a3912922a28e513baaf7e2e8a4.zip
gcc-a2977d2db3aaf1a3912922a28e513baaf7e2e8a4.tar.gz
gcc-a2977d2db3aaf1a3912922a28e513baaf7e2e8a4.tar.bz2
Important patch from Burley.
From-SVN: r16291
Diffstat (limited to 'gcc')
-rw-r--r--gcc/f/ChangeLog10
-rw-r--r--gcc/f/com.c3
-rw-r--r--gcc/f/news.texi43
-rw-r--r--gcc/f/ste.c8
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