OSDN Git Service

* gcc.texi: Fixes for makeinfo 4.0 --html.
[pf3gnuchains/gcc-fork.git] / gcc / c-iterate.c
index f8dec10..1692d2a 100644 (file)
@@ -1,5 +1,6 @@
 /* Build expressions with type checking for C compiler.
-   Copyright (C) 1987, 88, 89, 92, 93, 1996 Free Software Foundation, Inc.
+   Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996
+   1997, 1998, 2000 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -24,12 +25,14 @@ Boston, MA 02111-1307, USA.  */
    both their declarations and the expansion of statements using them.  */
 
 #include "config.h"
-#include <stdio.h>
+#include "system.h"
 #include "tree.h"
 #include "c-tree.h"
 #include "flags.h"
 #include "obstack.h"
 #include "rtl.h"
+#include "toplev.h"
+#include "expr.h"
 \f
 /*
                KEEPING TRACK OF EXPANSIONS
@@ -92,16 +95,16 @@ static char *ixp_firstobj;
 /* During collect_iterators, a list of SAVE_EXPRs already scanned.  */
 static tree save_exprs;
 
-static void expand_stmt_with_iterators_1 PROTO((tree, tree));
-static tree collect_iterators          PROTO((tree, tree));
-static void iterator_loop_prologue     PROTO((tree, rtx *, rtx *));
-static void iterator_loop_epilogue     PROTO((tree, rtx *, rtx *));
-static int top_level_ixpansion_p       PROTO((void));
-static void isn_append                 PROTO((struct iter_stack_node *,
-                                              struct iter_stack_node *));
-static void istack_sublevel_to_current PROTO((void));
-static void add_ixpansion              PROTO((tree, rtx, rtx, rtx, rtx));
-static void delete_ixpansion           PROTO((tree));
+static void expand_stmt_with_iterators_1 PARAMS ((tree, tree));
+static tree collect_iterators          PARAMS ((tree, tree));
+static void iterator_loop_prologue     PARAMS ((tree, rtx *, rtx *));
+static void iterator_loop_epilogue     PARAMS ((tree, rtx *, rtx *));
+static int top_level_ixpansion_p       PARAMS ((void));
+static void isn_append                 PARAMS ((struct iter_stack_node *,
+                                                struct iter_stack_node *));
+static void istack_sublevel_to_current PARAMS ((void));
+static void add_ixpansion              PARAMS ((tree, rtx, rtx, rtx, rtx));
+static void delete_ixpansion           PARAMS ((tree));
 \f
 /* Initialize our obstack once per compilation.  */
 
@@ -255,6 +258,8 @@ collect_iterators (exp, list)
                break;
              case RTL_EXPR:
                return list;
+             default:
+               break;
              }
                
            for (i = 0; i < num_args; i++)
@@ -284,7 +289,8 @@ iterator_loop_prologue (idecl, start_note, end_note)
 
   /* Force the save_expr in DECL_INITIAL to be calculated
      if it hasn't been calculated yet.  */
-  expand_expr (DECL_INITIAL (idecl), const0_rtx, VOIDmode, 0);
+  expand_expr (DECL_INITIAL (idecl), const0_rtx, VOIDmode,
+              EXPAND_NORMAL);
 
   if (DECL_RTL (idecl) == 0)
     expand_decl (idecl);
@@ -295,7 +301,7 @@ iterator_loop_prologue (idecl, start_note, end_note)
   /* Initialize counter.  */
   expr = build (MODIFY_EXPR, TREE_TYPE (idecl), idecl, integer_zero_node);
   TREE_SIDE_EFFECTS (expr) = 1;
-  expand_expr (expr, const0_rtx, VOIDmode, 0);
+  expand_expr (expr, const0_rtx, VOIDmode, EXPAND_NORMAL);
 
   expand_start_loop_continue_elsewhere (1);
 
@@ -336,7 +342,7 @@ iterator_loop_epilogue (idecl, start_note, end_note)
   incr = build_binary_op (PLUS_EXPR, idecl, integer_one_node, 0);
   incr = build (MODIFY_EXPR, TREE_TYPE (idecl), idecl, incr);
   TREE_SIDE_EFFECTS (incr) = 1;
-  expand_expr (incr, const0_rtx, VOIDmode, 0);
+  expand_expr (incr, const0_rtx, VOIDmode, EXPAND_NORMAL);
   test = build_binary_op (LT_EXPR, idecl, DECL_INITIAL (idecl), 0);
   expand_exit_loop_if_false (0, test);
   expand_end_loop ();
@@ -534,10 +540,10 @@ prdecl (d)
          fprintf (stderr, dname);
        }
       else
-       fprintf (stderr, "<<Not a Decl!!!>>");
+       fprintf (stderr, "<<?>>");
     }
   else
-    fprintf (stderr, "<<NULL!!>>");
+    fprintf (stderr, "<<0>>");
 }
 
 /* Print Iterator List -- names only */