diff options
author | Craig Burley <craig@jcb-sc.com> | 1999-04-04 23:16:21 +0000 |
---|---|---|
committer | Craig Burley <burley@gcc.gnu.org> | 1999-04-04 19:16:21 -0400 |
commit | 702edf1d71ab3a86e114d664f56c8929678d0d4c (patch) | |
tree | 536bedee473f17d5f64b5cfff93ca36195d1ca4e /gcc/f/ste.c | |
parent | f114df2032fdc0c50ac41395460ee273a2860a6a (diff) | |
download | gcc-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.c | 26 |
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 ()) |