00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _TREE_SIMPLE_H
00023 #define _TREE_SIMPLE_H 1
00024
00025
00026 #include "tree-iterator.h"
00027
00028 extern tree create_tmp_var_raw (tree, const char *);
00029 extern tree create_tmp_var_name (const char *);
00030 extern tree create_tmp_var (tree, const char *);
00031 extern tree get_initialized_tmp_var (tree, tree *, tree *);
00032 extern tree get_formal_tmp_var (tree, tree *);
00033 extern void declare_tmp_vars (tree, tree);
00034
00035 extern void annotate_all_with_locus (tree *, location_t);
00036
00037
00038
00039
00040
00041 typedef bool (*gimple_predicate)(tree);
00042
00043
00044 extern bool is_gimple_stmt (tree);
00045
00046
00047 extern bool is_gimple_reg_type (tree);
00048
00049 extern bool is_gimple_reg (tree);
00050
00051 extern bool is_gimple_formal_tmp_var (tree);
00052
00053 extern bool is_gimple_formal_tmp_reg (tree);
00054
00055 extern bool is_gimple_variable (tree);
00056
00057 extern bool is_gimple_min_lval (tree);
00058
00059 extern bool is_gimple_addressable (tree);
00060
00061 extern bool is_gimple_lvalue (tree);
00062
00063
00064 extern bool is_gimple_min_invariant (tree);
00065
00066 extern bool is_gimple_val (tree);
00067
00068 extern bool is_gimple_asm_val (tree);
00069
00070
00071
00072 extern bool is_gimple_formal_tmp_rhs (tree);
00073 extern bool is_gimple_reg_rhs (tree);
00074 extern bool is_gimple_mem_rhs (tree);
00075
00076
00077 extern gimple_predicate rhs_predicate_for (tree);
00078
00079
00080 extern bool is_gimple_condexpr (tree);
00081
00082
00083 extern bool is_gimple_cast (tree);
00084
00085 extern bool is_gimple_non_addressable (tree t);
00086
00087
00088 extern bool is_gimple_call_addr (tree);
00089
00090 extern tree get_call_expr_in (tree t);
00091
00092 extern void recalculate_side_effects (tree);
00093
00094
00095 typedef enum fallback_t {
00096 fb_none = 0,
00097 fb_rvalue = 1,
00098 fb_lvalue = 2,
00099 fb_mayfail = 4,
00100 fb_either= fb_rvalue | fb_lvalue
00101 } fallback_t;
00102
00103 enum gimplify_status {
00104 GS_ERROR = -2,
00105 GS_UNHANDLED = -1,
00106 GS_OK = 0,
00107 GS_ALL_DONE = 1
00108 };
00109
00110 extern enum gimplify_status gimplify_expr (tree *, tree *, tree *,
00111 bool (*) (tree), fallback_t);
00112 extern void gimplify_type_sizes (tree, tree *);
00113 extern void gimplify_one_sizepos (tree *, tree *);
00114 extern void gimplify_stmt (tree *);
00115 extern void gimplify_to_stmt_list (tree *);
00116 extern void gimplify_body (tree *, tree, bool);
00117 extern void push_gimplify_context (void);
00118 extern void pop_gimplify_context (tree);
00119 extern void gimplify_and_add (tree, tree *);
00120
00121
00122 extern void gimple_add_tmp_var (tree);
00123 extern tree gimple_current_bind_expr (void);
00124 extern void gimple_push_bind_expr (tree);
00125 extern void gimple_pop_bind_expr (void);
00126 extern void unshare_all_trees (tree);
00127 extern tree voidify_wrapper_expr (tree, tree);
00128 extern tree gimple_build_eh_filter (tree, tree, tree);
00129 extern tree build_and_jump (tree *);
00130 extern tree alloc_stmt_list (void);
00131 extern void free_stmt_list (tree);
00132 extern tree force_labels_r (tree *, int *, void *);
00133 extern enum gimplify_status gimplify_va_arg_expr (tree *, tree *, tree *);
00134
00135
00136 extern void lower_nested_functions (tree);
00137
00138 #endif