aboutsummaryrefslogtreecommitdiff
path: root/gcc/f/ste.c
diff options
context:
space:
mode:
authorCraig Burley <craig@jcb-sc.com>1999-04-04 23:16:21 +0000
committerCraig Burley <burley@gcc.gnu.org>1999-04-04 19:16:21 -0400
commit702edf1d71ab3a86e114d664f56c8929678d0d4c (patch)
tree536bedee473f17d5f64b5cfff93ca36195d1ca4e /gcc/f/ste.c
parentf114df2032fdc0c50ac41395460ee273a2860a6a (diff)
downloadgcc-702edf1d71ab3a86e114d664f56c8929678d0d4c.zip
gcc-702edf1d71ab3a86e114d664f56c8929678d0d4c.tar.gz
gcc-702edf1d71ab3a86e114d664f56c8929678d0d4c.tar.bz2
fix bugs exposed by --enable-checking
From-SVN: r26181
Diffstat (limited to 'gcc/f/ste.c')
-rw-r--r--gcc/f/ste.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/f/ste.c b/gcc/f/ste.c
index d674139..e8c066e 100644
--- a/gcc/f/ste.c
+++ b/gcc/f/ste.c
@@ -317,6 +317,17 @@ ffeste_begin_iterdo_ (ffestw block, tree *xtvar, tree *xtincr,
tvar = ffecom_expr_rw (var);
tincr = ffecom_expr (incr);
+ if (TREE_CODE (tvar) == ERROR_MARK
+ || TREE_CODE (tincr) == ERROR_MARK)
+ {
+ if (block)
+ ffestw_set_do_tvar (block, error_mark_node);
+ else
+ *xtvar = error_mark_node;
+ pop_momentary ();
+ return;
+ }
+
/* Check whether incr is known to be zero, complain and fix. */
if (integer_zerop (tincr) || real_zerop (tincr))
@@ -336,6 +347,18 @@ ffeste_begin_iterdo_ (ffestw block, tree *xtvar, tree *xtincr,
tstart = ffecom_expr (start);
tend = ffecom_expr (end);
+ if (TREE_CODE (tstart) == ERROR_MARK
+ || TREE_CODE (tend) == ERROR_MARK)
+ {
+ if (block)
+ ffestw_set_do_tvar (block, error_mark_node);
+ else
+ *xtvar = error_mark_node;
+ pop_momentary ();
+ pop_momentary ();
+ return;
+ }
+
{ /* For warnings only, nothing else
happens here. */
tree try;
@@ -492,6 +515,9 @@ ffeste_end_iterdo_ (tree tvar, tree tincr, tree itersvar)
tree expr;
tree niters = itersvar;
+ if (tvar == error_mark_node)
+ return;
+
expand_loop_continue_here ();
if (ffe_is_onetrip ())