-extern void genrtl_do_pushlevel PARAMS ((void));
-extern void genrtl_goto_stmt PARAMS ((tree));
-extern void genrtl_expr_stmt PARAMS ((tree));
-extern void genrtl_expr_stmt_value PARAMS ((tree, int, int));
-extern void genrtl_decl_stmt PARAMS ((tree));
-extern void genrtl_if_stmt PARAMS ((tree));
-extern void genrtl_while_stmt PARAMS ((tree));
-extern void genrtl_do_stmt PARAMS ((tree));
-extern void genrtl_return_stmt PARAMS ((tree));
-extern void genrtl_for_stmt PARAMS ((tree));
-extern void genrtl_break_stmt PARAMS ((void));
-extern void genrtl_continue_stmt PARAMS ((void));
-extern void genrtl_scope_stmt PARAMS ((tree));
-extern void genrtl_switch_stmt PARAMS ((tree));
-extern void genrtl_case_label PARAMS ((tree));
-extern void genrtl_compound_stmt PARAMS ((tree));
-extern void genrtl_asm_stmt PARAMS ((tree, tree,
- tree, tree,
- tree, int));
-extern void genrtl_decl_cleanup PARAMS ((tree));
-extern int stmts_are_full_exprs_p PARAMS ((void));
-extern int anon_aggr_type_p PARAMS ((tree));
+#define c_common_stmt_codes \
+ CLEANUP_STMT, EXPR_STMT, COMPOUND_STMT, \
+ DECL_STMT, IF_STMT, FOR_STMT, \
+ WHILE_STMT, DO_STMT, RETURN_STMT, \
+ BREAK_STMT, CONTINUE_STMT, SCOPE_STMT, \
+ SWITCH_STMT, GOTO_STMT, LABEL_STMT, \
+ ASM_STMT, FILE_STMT, CASE_LABEL
+
+/* TRUE if a code represents a statement. The front end init
+ langhook should take care of initialization of this array. */
+extern bool statement_code_p[MAX_TREE_CODES];
+
+#define STATEMENT_CODE_P(CODE) statement_code_p[(int) (CODE)]
+
+#define INIT_STATEMENT_CODES(STMT_CODES) \
+ do { \
+ unsigned int i; \
+ memset (&statement_code_p, 0, sizeof (statement_code_p)); \
+ for (i = 0; i < ARRAY_SIZE (STMT_CODES); i++) \
+ statement_code_p[STMT_CODES[i]] = true; \
+ } while (0)
+
+extern void genrtl_do_pushlevel (void);
+extern void genrtl_goto_stmt (tree);
+extern void genrtl_expr_stmt (tree);
+extern void genrtl_expr_stmt_value (tree, int, int);
+extern void genrtl_decl_stmt (tree);
+extern void genrtl_if_stmt (tree);
+extern void genrtl_while_stmt (tree);
+extern void genrtl_do_stmt (tree);
+extern void genrtl_return_stmt (tree);
+extern void genrtl_for_stmt (tree);
+extern void genrtl_break_stmt (void);
+extern void genrtl_continue_stmt (void);
+extern void genrtl_scope_stmt (tree);
+extern void genrtl_switch_stmt (tree);
+extern void genrtl_case_label (tree);
+extern void genrtl_compound_stmt (tree);
+extern void genrtl_asm_stmt (tree, tree, tree, tree, tree, int);
+extern void genrtl_cleanup_stmt (tree);
+extern int stmts_are_full_exprs_p (void);
+extern int anon_aggr_type_p (tree);