diff options
-rw-r--r-- | gcc/ChangeLog | 61 | ||||
-rw-r--r-- | gcc/expr.c | 2 | ||||
-rw-r--r-- | gcc/fold-const.c | 2 | ||||
-rw-r--r-- | gcc/real.h | 2 | ||||
-rw-r--r-- | gcc/tree-flow-inline.h | 89 | ||||
-rw-r--r-- | gcc/tree-flow.h | 24 | ||||
-rw-r--r-- | gcc/tree-gimple.c | 2 | ||||
-rw-r--r-- | gcc/tree-gimple.h | 2 | ||||
-rw-r--r-- | gcc/tree.c | 132 | ||||
-rw-r--r-- | gcc/tree.h | 100 |
10 files changed, 236 insertions, 180 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 61a3bec..ba92944 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,66 @@ 2007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + * expr.c (handled_component_p): Constify. + * fold-const.c (fit_double_type): Likewise. + * real.h (real_value_from_int_cst): Likewise. + * tree-flow-inline.h (gimple_in_ssa_p, + gimple_aliases_computed_p, gimple_addressable_vars, + gimple_call_clobbered_vars, gimple_referenced_vars, + gimple_global_var, gimple_nonlocal_all, gimple_var_anns, + end_htab_p, end_referenced_vars_p, var_ann, function_ann, + may_aliases, end_readonly_imm_use_p, has_zero_uses, + has_single_use, single_imm_use, num_imm_uses, is_exec_stmt, + is_label_stmt, is_global_var, phi_ssa_name_p, + factoring_name_p, is_call_clobbered, tree_common_ann, + op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p, + unmodifiable_var_p, array_ref_contains_indirect_ref, + ref_contains_array_ref, lookup_subvars_for_var, + var_can_have_subvars, overlap_subvar, gimple_ssa_operands, + gimple_mem_ref_stats): Likewise. + * tree-flow.h (tree_common_ann, var_ann, function_ann, + may_aliases, is_exec_stmt, is_label_stmt, + ref_contains_array_ref, array_ref_contains_indirect_ref, + var_can_have_subvars, overlap_subvar, is_call_clobbered, + unmodifiable_var_p): Likewise. + * tree-gimple.c (is_gimple_min_invariant): Likewise. + * tree-gimple.h (is_gimple_min_invariant): Likewise. + * tree.c (type_hash_list, attribute_hash_list, tree_size, + cst_and_fits_in_hwi, real_value_from_int_cst, + build_real_from_int_cst, integer_zerop, integer_onep, + integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2, + tree_floor_log2, real_zerop, real_onep, real_twop, + real_minus_onep, really_constant_p, purpose_member, chain_member, + list_length, fields_length, int_size_in_bytes, bit_position, + int_bit_position, byte_position, int_byte_position, expr_align, + array_type_nelts, tree_node_structure, + type_contains_placeholder_1, iterative_hash_pointer, + is_attribute_with_length_p, is_attribute_p, check_qualified_type, + tree_map_base_eq, type_hash_list, type_hash_eq, + attribute_hash_list, type_num_arguments, tree_int_cst_equal, + tree_int_cst_lt, tree_int_cst_compare, host_integerp, + tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn, + simple_cst_list_equal, compare_tree_int, iterative_hash_expr, + int_fits_type_p, get_containing_scope, decl_function_context, + decl_type_context, omp_clause_operand_check_failed, + initializer_zerop, int_cst_value, num_ending_zeros): Likewise. + * tree.h (omp_clause_operand_check_failed, tree_size, + build_real_from_int_cst, array_type_nelts, purpose_member, + tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare, + host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn, + is_attribute_p, check_qualified_type, expr_align, + int_size_in_bytes, bit_position, int_bit_position, byte_position, + int_byte_position, list_length, fields_length, initializer_zerop, + integer_zerop, integer_onep, integer_all_onesp, integer_pow2p, + integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros, + tree_node_structure, handled_component_p, get_containing_scope, + decl_function_context, decl_type_context, real_zerop, + type_num_arguments, fit_double_type, really_constant_p, + int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr, + compare_tree_int, chain_member, simple_cst_list_equal, real_onep, + real_twop, real_minus_onep, int_cst_value): Likewise. + +2007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + * cfglayout.c (insn_scope, insn_line): Constify. * emit-rtl.c (const_int_htab_hash, const_int_htab_eq, const_double_htab_hash, const_double_htab_eq, @@ -6061,7 +6061,7 @@ component_ref_field_offset (tree exp) /* Return 1 if T is an expression that get_inner_reference handles. */ int -handled_component_p (tree t) +handled_component_p (const_tree t) { switch (TREE_CODE (t)) { diff --git a/gcc/fold-const.c b/gcc/fold-const.c index bff4725..88e57d4 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -198,7 +198,7 @@ decode (HOST_WIDE_INT *words, unsigned HOST_WIDE_INT *low, int fit_double_type (unsigned HOST_WIDE_INT l1, HOST_WIDE_INT h1, - unsigned HOST_WIDE_INT *lv, HOST_WIDE_INT *hv, tree type) + unsigned HOST_WIDE_INT *lv, HOST_WIDE_INT *hv, const_tree type) { unsigned HOST_WIDE_INT low0 = l1; HOST_WIDE_INT high0 = h1; @@ -391,7 +391,7 @@ extern REAL_VALUE_TYPE dconste; /* Function to return a real value (not a tree node) from a given integer constant. */ -REAL_VALUE_TYPE real_value_from_int_cst (tree, tree); +REAL_VALUE_TYPE real_value_from_int_cst (const_tree, const_tree); /* Given a CONST_DOUBLE in FROM, store into TO the value it represents. */ #define REAL_VALUE_FROM_CONST_DOUBLE(to, from) \ diff --git a/gcc/tree-flow-inline.h b/gcc/tree-flow-inline.h index cb2f655..870dc94 100644 --- a/gcc/tree-flow-inline.h +++ b/gcc/tree-flow-inline.h @@ -30,14 +30,14 @@ Boston, MA 02110-1301, USA. */ infrastructure is initialized. Check for presence of the datastructures at first place. */ static inline bool -gimple_in_ssa_p (struct function *fun) +gimple_in_ssa_p (const struct function *fun) { return fun && fun->gimple_df && fun->gimple_df->in_ssa_p; } /* 'true' after aliases have been computed (see compute_may_aliases). */ static inline bool -gimple_aliases_computed_p (struct function *fun) +gimple_aliases_computed_p (const struct function *fun) { gcc_assert (fun && fun->gimple_df); return fun->gimple_df->aliases_computed_p; @@ -51,7 +51,7 @@ gimple_aliases_computed_p (struct function *fun) call-clobbered variables are addressable (e.g., a local static variable). */ static inline bitmap -gimple_addressable_vars (struct function *fun) +gimple_addressable_vars (const struct function *fun) { gcc_assert (fun && fun->gimple_df); return fun->gimple_df->addressable_vars; @@ -60,7 +60,7 @@ gimple_addressable_vars (struct function *fun) /* Call clobbered variables in the function. If bit I is set, then REFERENCED_VARS (I) is call-clobbered. */ static inline bitmap -gimple_call_clobbered_vars (struct function *fun) +gimple_call_clobbered_vars (const struct function *fun) { gcc_assert (fun && fun->gimple_df); return fun->gimple_df->call_clobbered_vars; @@ -68,7 +68,7 @@ gimple_call_clobbered_vars (struct function *fun) /* Array of all variables referenced in the function. */ static inline htab_t -gimple_referenced_vars (struct function *fun) +gimple_referenced_vars (const struct function *fun) { if (!fun->gimple_df) return NULL; @@ -77,7 +77,7 @@ gimple_referenced_vars (struct function *fun) /* Artificial variable used to model the effects of function calls. */ static inline tree -gimple_global_var (struct function *fun) +gimple_global_var (const struct function *fun) { gcc_assert (fun && fun->gimple_df); return fun->gimple_df->global_var; @@ -86,7 +86,7 @@ gimple_global_var (struct function *fun) /* Artificial variable used to model the effects of nonlocal variables. */ static inline tree -gimple_nonlocal_all (struct function *fun) +gimple_nonlocal_all (const struct function *fun) { gcc_assert (fun && fun->gimple_df); return fun->gimple_df->nonlocal_all; @@ -95,7 +95,7 @@ gimple_nonlocal_all (struct function *fun) /* Hashtable of variables annotations. Used for static variables only; local variables have direct pointer in the tree node. */ static inline htab_t -gimple_var_anns (struct function *fun) +gimple_var_anns (const struct function *fun) { return fun->gimple_df->var_anns; } @@ -124,7 +124,7 @@ first_htab_element (htab_iterator *hti, htab_t table) or NULL if we have reached the end. */ static inline bool -end_htab_p (htab_iterator *hti) +end_htab_p (const htab_iterator *hti) { if (hti->slot >= hti->limit) return true; @@ -165,7 +165,7 @@ first_referenced_var (referenced_var_iterator *iter) iterating through. */ static inline bool -end_referenced_vars_p (referenced_var_iterator *iter) +end_referenced_vars_p (const referenced_var_iterator *iter) { return end_htab_p (&iter->hti); } @@ -198,7 +198,7 @@ fill_referenced_var_vec (VEC (tree, heap) **vec) /* Return the variable annotation for T, which must be a _DECL node. Return NULL if the variable annotation doesn't already exist. */ static inline var_ann_t -var_ann (tree t) +var_ann (const_tree t) { gcc_assert (t); gcc_assert (DECL_P (t)); @@ -231,7 +231,7 @@ get_var_ann (tree var) /* Return the function annotation for T, which must be a FUNCTION_DECL node. Return NULL if the function annotation doesn't already exist. */ static inline function_ann_t -function_ann (tree t) +function_ann (const_tree t) { gcc_assert (t); gcc_assert (TREE_CODE (t) == FUNCTION_DECL); @@ -306,7 +306,7 @@ bb_for_stmt (tree t) /* Return the may_aliases bitmap for variable VAR, or NULL if it has no may aliases. */ static inline bitmap -may_aliases (tree var) +may_aliases (const_tree var) { return MTAG_ALIASES (var); } @@ -497,7 +497,7 @@ relink_imm_use_stmt (ssa_use_operand_t *linknode, ssa_use_operand_t *old, tree s /* Return true is IMM has reached the end of the immediate use list. */ static inline bool -end_readonly_imm_use_p (imm_use_iterator *imm) +end_readonly_imm_use_p (const imm_use_iterator *imm) { return (imm->imm_use == imm->end_p); } @@ -541,20 +541,18 @@ next_readonly_imm_use (imm_use_iterator *imm) /* Return true if VAR has no uses. */ static inline bool -has_zero_uses (tree var) +has_zero_uses (const_tree var) { - ssa_use_operand_t *ptr; - ptr = &(SSA_NAME_IMM_USE_NODE (var)); + const ssa_use_operand_t *const ptr = &(SSA_NAME_IMM_USE_NODE (var)); /* A single use means there is no items in the list. */ return (ptr == ptr->next); } /* Return true if VAR has a single use. */ static inline bool -has_single_use (tree var) +has_single_use (const_tree var) { - ssa_use_operand_t *ptr; - ptr = &(SSA_NAME_IMM_USE_NODE (var)); + const ssa_use_operand_t *const ptr = &(SSA_NAME_IMM_USE_NODE (var)); /* A single use means there is one item in the list. */ return (ptr != ptr->next && ptr == ptr->next->next); } @@ -563,11 +561,9 @@ has_single_use (tree var) /* If VAR has only a single immediate use, return true, and set USE_P and STMT to the use pointer and stmt of occurrence. */ static inline bool -single_imm_use (tree var, use_operand_p *use_p, tree *stmt) +single_imm_use (const_tree var, use_operand_p *use_p, tree *stmt) { - ssa_use_operand_t *ptr; - - ptr = &(SSA_NAME_IMM_USE_NODE (var)); + const ssa_use_operand_t *const ptr = &(SSA_NAME_IMM_USE_NODE (var)); if (ptr != ptr->next && ptr == ptr->next->next) { *use_p = ptr->next; @@ -581,13 +577,12 @@ single_imm_use (tree var, use_operand_p *use_p, tree *stmt) /* Return the number of immediate uses of VAR. */ static inline unsigned int -num_imm_uses (tree var) +num_imm_uses (const_tree var) { - ssa_use_operand_t *ptr, *start; - unsigned int num; + const ssa_use_operand_t *const start = &(SSA_NAME_IMM_USE_NODE (var)); + const ssa_use_operand_t *ptr; + unsigned int num = 0; - start = &(SSA_NAME_IMM_USE_NODE (var)); - num = 0; for (ptr = start->next; ptr != start; ptr = ptr->next) num++; @@ -707,7 +702,7 @@ set_is_used (tree var) /* Return true if T is an executable statement. */ static inline bool -is_exec_stmt (tree t) +is_exec_stmt (const_tree t) { return (t && !IS_EMPTY_STMT (t) && t != error_mark_node); } @@ -716,7 +711,7 @@ is_exec_stmt (tree t) /* Return true if this stmt can be the target of a control transfer stmt such as a goto. */ static inline bool -is_label_stmt (tree t) +is_label_stmt (const_tree t) { if (t) switch (TREE_CODE (t)) @@ -734,7 +729,7 @@ is_label_stmt (tree t) /* Return true if T (assumed to be a DECL) is a global variable. */ static inline bool -is_global_var (tree t) +is_global_var (const_tree t) { if (MTAG_P (t)) return (TREE_STATIC (t) || MTAG_GLOBAL (t)); @@ -747,7 +742,7 @@ is_global_var (tree t) slip in in the meantime. */ static inline bool -phi_ssa_name_p (tree t) +phi_ssa_name_p (const_tree t) { if (TREE_CODE (t) == SSA_NAME) return true; @@ -905,14 +900,14 @@ memory_partition (tree sym) name for a memory partition. */ static inline bool -factoring_name_p (tree name) +factoring_name_p (const_tree name) { return TREE_CODE (SSA_NAME_VAR (name)) == MEMORY_PARTITION_TAG; } /* Return true if VAR is a clobbered by function calls. */ static inline bool -is_call_clobbered (tree var) +is_call_clobbered (const_tree var) { if (!MTAG_P (var)) return var_ann (var)->call_clobbered; @@ -946,7 +941,7 @@ clear_call_clobbered (tree var) /* Return the common annotation for T. Return NULL if the annotation doesn't already exist. */ static inline tree_ann_common_t -tree_common_ann (tree t) +tree_common_ann (const_tree t) { /* Watch out static variables with unshared annotations. */ if (DECL_P (t) && TREE_CODE (t) == VAR_DECL) @@ -970,7 +965,7 @@ get_tree_common_ann (tree t) /* Return true if PTR is finished iterating. */ static inline bool -op_iter_done (ssa_op_iter *ptr) +op_iter_done (const ssa_op_iter *ptr) { return ptr->done; } @@ -1436,7 +1431,7 @@ op_iter_init_phidef (ssa_op_iter *ptr, tree phi, int flags) /* Return true is IMM has reached the end of the immediate use stmt list. */ static inline bool -end_imm_use_stmt_p (imm_use_iterator *imm) +end_imm_use_stmt_p (const imm_use_iterator *imm) { return (imm->imm_use == imm->end_p); } @@ -1570,7 +1565,7 @@ first_imm_use_on_stmt (imm_use_iterator *imm) /* Return TRUE if the last use on the stmt IMM refers to has been visited. */ static inline bool -end_imm_use_on_stmt_p (imm_use_iterator *imm) +end_imm_use_on_stmt_p (const imm_use_iterator *imm) { return (imm->imm_use == &(imm->iter_node)); } @@ -1593,7 +1588,7 @@ next_imm_use_on_stmt (imm_use_iterator *imm) /* Return true if VAR cannot be modified by the program. */ static inline bool -unmodifiable_var_p (tree var) +unmodifiable_var_p (const_tree var) { if (TREE_CODE (var) == SSA_NAME) var = SSA_NAME_VAR (var); @@ -1607,7 +1602,7 @@ unmodifiable_var_p (tree var) /* Return true if REF, an ARRAY_REF, has an INDIRECT_REF somewhere in it. */ static inline bool -array_ref_contains_indirect_ref (tree ref) +array_ref_contains_indirect_ref (const_tree ref) { gcc_assert (TREE_CODE (ref) == ARRAY_REF); @@ -1622,7 +1617,7 @@ array_ref_contains_indirect_ref (tree ref) somewhere in it. */ static inline bool -ref_contains_array_ref (tree ref) +ref_contains_array_ref (const_tree ref) { gcc_assert (handled_component_p (ref)); @@ -1639,7 +1634,7 @@ ref_contains_array_ref (tree ref) subvariables for it. */ static inline subvar_t * -lookup_subvars_for_var (tree var) +lookup_subvars_for_var (const_tree var) { var_ann_t ann = var_ann (var); gcc_assert (ann); @@ -1682,7 +1677,7 @@ get_subvar_at (tree var, unsigned HOST_WIDE_INT offset) types which are not gimple registers can have subvars. */ static inline bool -var_can_have_subvars (tree v) +var_can_have_subvars (const_tree v) { /* Volatile variables should never have subvars. */ if (TREE_THIS_VOLATILE (v)) @@ -1712,7 +1707,7 @@ var_can_have_subvars (tree v) static inline bool overlap_subvar (unsigned HOST_WIDE_INT offset, unsigned HOST_WIDE_INT size, - tree sv, bool *exact) + const_tree sv, bool *exact) { /* There are three possible cases of overlap. 1. We can have an exact overlap, like so: @@ -1811,14 +1806,14 @@ get_value_handle (tree expr) /* Accessor to tree-ssa-operands.c caches. */ static inline struct ssa_operands * -gimple_ssa_operands (struct function *fun) +gimple_ssa_operands (const struct function *fun) { return &fun->gimple_df->ssa_operands; } /* Map describing reference statistics for function FN. */ static inline struct mem_ref_stats_d * -gimple_mem_ref_stats (struct function *fn) +gimple_mem_ref_stats (const struct function *fn) { return &fn->gimple_df->mem_ref_stats; } diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index 51a03ba..176b385 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -519,11 +519,11 @@ typedef struct function_ann_d *function_ann_t; typedef struct stmt_ann_d *stmt_ann_t; typedef struct tree_ann_common_d *tree_ann_common_t; -static inline tree_ann_common_t tree_common_ann (tree); +static inline tree_ann_common_t tree_common_ann (const_tree); static inline tree_ann_common_t get_tree_common_ann (tree); -static inline var_ann_t var_ann (tree); +static inline var_ann_t var_ann (const_tree); static inline var_ann_t get_var_ann (tree); -static inline function_ann_t function_ann (tree); +static inline function_ann_t function_ann (const_tree); static inline function_ann_t get_function_ann (tree); static inline stmt_ann_t stmt_ann (tree); static inline bool has_stmt_ann (tree); @@ -534,11 +534,11 @@ extern void set_bb_for_stmt (tree, basic_block); static inline bool noreturn_call_p (tree); static inline void update_stmt (tree); static inline bool stmt_modified_p (tree); -static inline bitmap may_aliases (tree); +static inline bitmap may_aliases (const_tree); static inline int get_lineno (tree); static inline const char *get_filename (tree); -static inline bool is_exec_stmt (tree); -static inline bool is_label_stmt (tree); +static inline bool is_exec_stmt (const_tree); +static inline bool is_label_stmt (const_tree); static inline bitmap addresses_taken (tree); /*--------------------------------------------------------------------------- @@ -840,14 +840,14 @@ extern void count_uses_and_derefs (tree, tree, unsigned *, unsigned *, unsigned *); static inline subvar_t get_subvars_for_var (tree); static inline tree get_subvar_at (tree, unsigned HOST_WIDE_INT); -static inline bool ref_contains_array_ref (tree); -static inline bool array_ref_contains_indirect_ref (tree); +static inline bool ref_contains_array_ref (const_tree); +static inline bool array_ref_contains_indirect_ref (const_tree); extern tree get_ref_base_and_extent (tree, HOST_WIDE_INT *, HOST_WIDE_INT *, HOST_WIDE_INT *); -static inline bool var_can_have_subvars (tree); +static inline bool var_can_have_subvars (const_tree); static inline bool overlap_subvar (unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT, - tree, bool *); + const_tree, bool *); extern tree create_tag_raw (enum tree_code, tree, const char *); extern void delete_mem_ref_stats (struct function *); extern void dump_mem_ref_stats (FILE *); @@ -1061,10 +1061,10 @@ enum escape_type }; /* In tree-flow-inline.h */ -static inline bool is_call_clobbered (tree); +static inline bool is_call_clobbered (const_tree); static inline void mark_call_clobbered (tree, unsigned int); static inline void set_is_used (tree); -static inline bool unmodifiable_var_p (tree); +static inline bool unmodifiable_var_p (const_tree); /* In tree-eh.c */ extern void make_eh_edges (tree); diff --git a/gcc/tree-gimple.c b/gcc/tree-gimple.c index 8f88f1d..4f42c9c 100644 --- a/gcc/tree-gimple.c +++ b/gcc/tree-gimple.c @@ -170,7 +170,7 @@ is_gimple_addressable (tree t) form of function invariant. */ bool -is_gimple_min_invariant (tree t) +is_gimple_min_invariant (const_tree t) { switch (TREE_CODE (t)) { diff --git a/gcc/tree-gimple.h b/gcc/tree-gimple.h index 60fde4e..4a8e3b1 100644 --- a/gcc/tree-gimple.h +++ b/gcc/tree-gimple.h @@ -64,7 +64,7 @@ extern bool is_gimple_addressable (tree); extern bool is_gimple_lvalue (tree); /* Returns true iff T is a GIMPLE restricted function invariant. */ -extern bool is_gimple_min_invariant (tree); +extern bool is_gimple_min_invariant (const_tree); /* Returns true iff T is a GIMPLE rvalue. */ extern bool is_gimple_val (tree); /* Returns true iff T is a GIMPLE asm statement input. */ @@ -162,8 +162,8 @@ static void print_type_hash_statistics (void); static void print_debug_expr_statistics (void); static void print_value_expr_statistics (void); static int type_hash_marked_p (const void *); -static unsigned int type_hash_list (tree, hashval_t); -static unsigned int attribute_hash_list (tree, hashval_t); +static unsigned int type_hash_list (const_tree, hashval_t); +static unsigned int attribute_hash_list (const_tree, hashval_t); tree global_trees[TI_MAX]; tree integer_types[itk_none]; @@ -439,9 +439,9 @@ tree_code_size (enum tree_code code) /* Compute the number of bytes occupied by NODE. This routine only looks at TREE_CODE, except for those nodes that have variable sizes. */ size_t -tree_size (tree node) +tree_size (const_tree node) { - enum tree_code code = TREE_CODE (node); + const enum tree_code code = TREE_CODE (node); switch (code) { case PHI_NODE: @@ -981,7 +981,7 @@ build_low_bits_mask (tree type, unsigned bits) HOST_WIDE_INT without loss of precision. */ bool -cst_and_fits_in_hwi (tree x) +cst_and_fits_in_hwi (const_tree x) { if (TREE_CODE (x) != INTEGER_CST) return false; @@ -1123,7 +1123,7 @@ build_real (tree type, REAL_VALUE_TYPE d) and whose value is the integer value of the INTEGER_CST node I. */ REAL_VALUE_TYPE -real_value_from_int_cst (tree type, tree i) +real_value_from_int_cst (const_tree type, const_tree i) { REAL_VALUE_TYPE d; @@ -1141,7 +1141,7 @@ real_value_from_int_cst (tree type, tree i) representing the same value as a floating-point constant of type TYPE. */ tree -build_real_from_int_cst (tree type, tree i) +build_real_from_int_cst (tree type, const_tree i) { tree v; int overflow = TREE_OVERFLOW (i); @@ -1294,7 +1294,7 @@ make_tree_vec_stat (int len MEM_STAT_DECL) of zero. */ int -integer_zerop (tree expr) +integer_zerop (const_tree expr) { STRIP_NOPS (expr); @@ -1310,7 +1310,7 @@ integer_zerop (tree expr) complex constant. */ int -integer_onep (tree expr) +integer_onep (const_tree expr) { STRIP_NOPS (expr); @@ -1326,7 +1326,7 @@ integer_onep (tree expr) it contains. Likewise for the corresponding complex constant. */ int -integer_all_onesp (tree expr) +integer_all_onesp (const_tree expr) { int prec; int uns; @@ -1378,7 +1378,7 @@ integer_all_onesp (tree expr) one bit on). */ int -integer_pow2p (tree expr) +integer_pow2p (const_tree expr) { int prec; HOST_WIDE_INT high, low; @@ -1423,7 +1423,7 @@ integer_pow2p (tree expr) complex constant other than zero. */ int -integer_nonzerop (tree expr) +integer_nonzerop (const_tree expr) { STRIP_NOPS (expr); @@ -1439,7 +1439,7 @@ integer_nonzerop (tree expr) power of two. */ int -tree_log2 (tree expr) +tree_log2 (const_tree expr) { int prec; HOST_WIDE_INT high, low; @@ -1477,7 +1477,7 @@ tree_log2 (tree expr) than or equal to EXPR. */ int -tree_floor_log2 (tree expr) +tree_floor_log2 (const_tree expr) { int prec; HOST_WIDE_INT high, low; @@ -1515,7 +1515,7 @@ tree_floor_log2 (tree expr) /* Return 1 if EXPR is the real constant zero. */ int -real_zerop (tree expr) +real_zerop (const_tree expr) { STRIP_NOPS (expr); @@ -1529,7 +1529,7 @@ real_zerop (tree expr) /* Return 1 if EXPR is the real constant one in real or complex form. */ int -real_onep (tree expr) +real_onep (const_tree expr) { STRIP_NOPS (expr); @@ -1543,7 +1543,7 @@ real_onep (tree expr) /* Return 1 if EXPR is the real constant two. */ int -real_twop (tree expr) +real_twop (const_tree expr) { STRIP_NOPS (expr); @@ -1557,7 +1557,7 @@ real_twop (tree expr) /* Return 1 if EXPR is the real constant minus one. */ int -real_minus_onep (tree expr) +real_minus_onep (const_tree expr) { STRIP_NOPS (expr); @@ -1571,7 +1571,7 @@ real_minus_onep (tree expr) /* Nonzero if EXP is a constant or a cast of a constant. */ int -really_constant_p (tree exp) +really_constant_p (const_tree exp) { /* This is not quite the same as STRIP_NOPS. It does more. */ while (TREE_CODE (exp) == NOP_EXPR @@ -1600,7 +1600,7 @@ value_member (tree elem, tree list) Return 0 if ELEM is not in LIST. */ tree -purpose_member (tree elem, tree list) +purpose_member (const_tree elem, tree list) { while (list) { @@ -1614,7 +1614,7 @@ purpose_member (tree elem, tree list) /* Return nonzero if ELEM is part of the chain CHAIN. */ int -chain_member (tree elem, tree chain) +chain_member (const_tree elem, const_tree chain) { while (chain) { @@ -1631,11 +1631,11 @@ chain_member (tree elem, tree chain) This is the Lisp primitive `length'. */ int -list_length (tree t) +list_length (const_tree t) { - tree p = t; + const_tree p = t; #ifdef ENABLE_TREE_CHECKING - tree q = t; + const_tree q = t; #endif int len = 0; @@ -1656,7 +1656,7 @@ list_length (tree t) /* Returns the number of FIELD_DECLs in TYPE. */ int -fields_length (tree type) +fields_length (const_tree type) { tree t = TYPE_FIELDS (type); int count = 0; @@ -1793,7 +1793,7 @@ size_in_bytes (tree type) or return -1 if the size can vary or is larger than an integer. */ HOST_WIDE_INT -int_size_in_bytes (tree type) +int_size_in_bytes (const_tree type) { tree t; @@ -1849,7 +1849,7 @@ max_int_size_in_bytes (tree type) This is a tree of type bitsizetype. */ tree -bit_position (tree field) +bit_position (const_tree field) { return bit_from_pos (DECL_FIELD_OFFSET (field), DECL_FIELD_BIT_OFFSET (field)); @@ -1860,7 +1860,7 @@ bit_position (tree field) option of returning -1 like int_size_in_byte can. */ HOST_WIDE_INT -int_bit_position (tree field) +int_bit_position (const_tree field) { return tree_low_cst (bit_position (field), 0); } @@ -1869,7 +1869,7 @@ int_bit_position (tree field) This is a tree of type sizetype. */ tree -byte_position (tree field) +byte_position (const_tree field) { return byte_from_pos (DECL_FIELD_OFFSET (field), DECL_FIELD_BIT_OFFSET (field)); @@ -1880,7 +1880,7 @@ byte_position (tree field) option of returning -1 like int_size_in_byte can. */ HOST_WIDE_INT -int_byte_position (tree field) +int_byte_position (const_tree field) { return tree_low_cst (byte_position (field), 0); } @@ -1888,7 +1888,7 @@ int_byte_position (tree field) /* Return the strictest alignment, in bits, that T is known to have. */ unsigned int -expr_align (tree t) +expr_align (const_tree t) { unsigned int align0, align1; @@ -1938,7 +1938,7 @@ expr_align (tree t) ARRAY_TYPE) minus one. This counts only elements of the top array. */ tree -array_type_nelts (tree type) +array_type_nelts (const_tree type) { tree index_type, min, max; @@ -2130,9 +2130,9 @@ skip_simple_arithmetic (tree expr) /* Return which tree structure is used by T. */ enum tree_node_structure_enum -tree_node_structure (tree t) +tree_node_structure (const_tree t) { - enum tree_code code = TREE_CODE (t); + const enum tree_code code = TREE_CODE (t); switch (TREE_CODE_CLASS (code)) { @@ -2297,7 +2297,7 @@ contains_placeholder_p (tree exp) (for QUAL_UNION_TYPE) and field positions. */ static bool -type_contains_placeholder_1 (tree type) +type_contains_placeholder_1 (const_tree type) { /* If the size contains a placeholder or the parent type (component type in the case of arrays) type involves a placeholder, this type does. */ @@ -3585,7 +3585,7 @@ iterative_hash_hashval_t (hashval_t val, hashval_t val2) /* Produce good hash value combining PTR and VAL2. */ static inline hashval_t -iterative_hash_pointer (void *ptr, hashval_t val2) +iterative_hash_pointer (const void *ptr, hashval_t val2) { if (sizeof (ptr) == sizeof (hashval_t)) return iterative_hash_hashval_t ((size_t) ptr, val2); @@ -3723,7 +3723,7 @@ build_type_attribute_variant (tree ttype, tree attribute) their canonicalized form. */ static int -is_attribute_with_length_p (const char *attr, int attr_len, tree ident) +is_attribute_with_length_p (const char *attr, int attr_len, const_tree ident) { int ident_len; const char *p; @@ -3766,7 +3766,7 @@ is_attribute_with_length_p (const char *attr, int attr_len, tree ident) We try both `text' and `__text__', ATTR may be either one. */ int -is_attribute_p (const char *attr, tree ident) +is_attribute_p (const char *attr, const_tree ident) { return is_attribute_with_length_p (attr, strlen (attr), ident); } @@ -4117,7 +4117,7 @@ set_type_quals (tree type, int type_quals) /* Returns true iff cand is equivalent to base with type_quals. */ bool -check_qualified_type (tree cand, tree base, int type_quals) +check_qualified_type (const_tree cand, const_tree base, int type_quals) { return (TYPE_QUALS (cand) == type_quals && TYPE_NAME (cand) == TYPE_NAME (base) @@ -4244,7 +4244,7 @@ build_variant_type_copy (tree type) int tree_map_base_eq (const void *va, const void *vb) { - const struct tree_map_base *a = va, *b = vb; + const struct tree_map_base *const a = va, *const b = vb; return (a->from == b->from); } @@ -4487,10 +4487,10 @@ decl_value_expr_insert (tree from, tree to) with types in the TREE_VALUE slots), by adding the hash codes of the individual types. */ -unsigned int -type_hash_list (tree list, hashval_t hashcode) +static unsigned int +type_hash_list (const_tree list, hashval_t hashcode) { - tree tail; + const_tree tail; for (tail = list; tail; tail = TREE_CHAIN (tail)) if (TREE_VALUE (tail) != error_mark_node) @@ -4507,7 +4507,7 @@ type_hash_list (tree list, hashval_t hashcode) static int type_hash_eq (const void *va, const void *vb) { - const struct type_hash *a = va, *b = vb; + const struct type_hash *const a = va, *const b = vb; /* First test the things that are the same for all types. */ if (a->hash != b->hash @@ -4704,10 +4704,10 @@ print_type_hash_statistics (void) with names in the TREE_PURPOSE slots and args in the TREE_VALUE slots), by adding the hash codes of the individual attributes. */ -unsigned int -attribute_hash_list (tree list, hashval_t hashcode) +static unsigned int +attribute_hash_list (const_tree list, hashval_t hashcode) { - tree tail; + const_tree tail; for (tail = list; tail; tail = TREE_CHAIN (tail)) /* ??? Do we want to add in TREE_VALUE too? */ @@ -4808,7 +4808,7 @@ type_list_equal (tree l1, tree l2) then this function counts only the ordinary arguments. */ int -type_num_arguments (tree type) +type_num_arguments (const_tree type) { int i = 0; tree t; @@ -4828,7 +4828,7 @@ type_num_arguments (tree type) represent the same constant value. */ int -tree_int_cst_equal (tree t1, tree t2) +tree_int_cst_equal (const_tree t1, const_tree t2) { if (t1 == t2) return 1; @@ -4849,7 +4849,7 @@ tree_int_cst_equal (tree t1, tree t2) The precise way of comparison depends on their data type. */ int -tree_int_cst_lt (tree t1, tree t2) +tree_int_cst_lt (const_tree t1, const_tree t2) { if (t1 == t2) return 0; @@ -4876,7 +4876,7 @@ tree_int_cst_lt (tree t1, tree t2) /* Returns -1 if T1 < T2, 0 if T1 == T2, and 1 if T1 > T2. */ int -tree_int_cst_compare (tree t1, tree t2) +tree_int_cst_compare (const_tree t1, const_tree t2) { if (tree_int_cst_lt (t1, t2)) return -1; @@ -4892,7 +4892,7 @@ tree_int_cst_compare (tree t1, tree t2) be represented in a single unsigned HOST_WIDE_INT. */ int -host_integerp (tree t, int pos) +host_integerp (const_tree t, int pos) { return (TREE_CODE (t) == INTEGER_CST && ((TREE_INT_CST_HIGH (t) == 0 @@ -4908,7 +4908,7 @@ host_integerp (tree t, int pos) be non-negative. We must be able to satisfy the above conditions. */ HOST_WIDE_INT -tree_low_cst (tree t, int pos) +tree_low_cst (const_tree t, int pos) { gcc_assert (host_integerp (t, pos)); return TREE_INT_CST_LOW (t); @@ -4917,7 +4917,7 @@ tree_low_cst (tree t, int pos) /* Return the most significant bit of the integer constant T. */ int -tree_int_cst_msb (tree t) +tree_int_cst_msb (const_tree t) { int prec; HOST_WIDE_INT h; @@ -4936,7 +4936,7 @@ tree_int_cst_msb (tree t) Note that -1 will never be returned if T's type is unsigned. */ int -tree_int_cst_sgn (tree t) +tree_int_cst_sgn (const_tree t) { if (TREE_INT_CST_LOW (t) == 0 && TREE_INT_CST_HIGH (t) == 0) return 0; @@ -4952,7 +4952,7 @@ tree_int_cst_sgn (tree t) are known to be equal; otherwise return 0. */ int -simple_cst_list_equal (tree l1, tree l2) +simple_cst_list_equal (const_tree l1, const_tree l2) { while (l1 != NULL_TREE && l2 != NULL_TREE) { @@ -5137,7 +5137,7 @@ simple_cst_equal (tree t1, tree t2) than U, respectively. */ int -compare_tree_int (tree t, unsigned HOST_WIDE_INT u) +compare_tree_int (const_tree t, unsigned HOST_WIDE_INT u) { if (tree_int_cst_sgn (t) < 0) return -1; @@ -5211,7 +5211,7 @@ commutative_tree_code (enum tree_code code) would compare equal using operand_equal_p. */ hashval_t -iterative_hash_expr (tree t, hashval_t val) +iterative_hash_expr (const_tree t, hashval_t val) { int i; enum tree_code code; @@ -6193,7 +6193,7 @@ get_narrower (tree op, int *unsignedp_ptr) for type TYPE (an INTEGER_TYPE). */ int -int_fits_type_p (tree c, tree type) +int_fits_type_p (const_tree c, const_tree type) { tree type_low_bound = TYPE_MIN_VALUE (type); tree type_high_bound = TYPE_MAX_VALUE (type); @@ -6428,7 +6428,7 @@ variably_modified_type_p (tree type, tree fn) NULL_TREE if there is no containing scope. */ tree -get_containing_scope (tree t) +get_containing_scope (const_tree t) { return (TYPE_P (t) ? TYPE_CONTEXT (t) : DECL_CONTEXT (t)); } @@ -6437,7 +6437,7 @@ get_containing_scope (tree t) a FUNCTION_DECL, or zero if none. */ tree -decl_function_context (tree decl) +decl_function_context (const_tree decl) { tree context; @@ -6473,7 +6473,7 @@ decl_function_context (tree decl) TYPE_DECLs and FUNCTION_DECLs are transparent to this function. */ tree -decl_type_context (tree decl) +decl_type_context (const_tree decl) { tree context = DECL_CONTEXT (decl); @@ -6959,7 +6959,7 @@ tree_operand_check_failed (int idx, tree exp, const char *file, operands of an OMP_CLAUSE node. */ void -omp_clause_operand_check_failed (int idx, tree t, const char *file, +omp_clause_operand_check_failed (int idx, const_tree t, const char *file, int line, const char *function) { internal_error @@ -7500,7 +7500,7 @@ build_resx (int region_number) /* Given an initializer INIT, return TRUE if INIT is zero or some aggregate of zeros. Otherwise return FALSE. */ bool -initializer_zerop (tree init) +initializer_zerop (const_tree init) { tree elt; @@ -7845,7 +7845,7 @@ find_compatible_field (tree record, tree orig_field) /* Return value of a constant X. */ HOST_WIDE_INT -int_cst_value (tree x) +int_cst_value (const_tree x) { unsigned bits = TYPE_PRECISION (TREE_TYPE (x)); unsigned HOST_WIDE_INT val = TREE_INT_CST_LOW (x); @@ -8024,7 +8024,7 @@ operand_equal_for_phi_arg_p (tree arg0, tree arg1) ??? Use ffs if available? */ tree -num_ending_zeros (tree x) +num_ending_zeros (const_tree x) { unsigned HOST_WIDE_INT fr, nfr; unsigned num, abits; @@ -887,7 +887,7 @@ extern void tree_operand_check_failed (int, tree, extern void omp_clause_check_failed (const tree, const char *, int, const char *, enum omp_clause_code) ATTRIBUTE_NORETURN; -extern void omp_clause_operand_check_failed (int, tree, const char *, +extern void omp_clause_operand_check_failed (int, const_tree, const char *, int, const char *) ATTRIBUTE_NORETURN; extern void omp_clause_range_check_failed (const tree, const char *, int, @@ -3642,7 +3642,7 @@ extern bool decl_assembler_name_equal (tree decl, tree asmname); /* Compute the number of bytes occupied by 'node'. This routine only looks at TREE_CODE and, if the code is TREE_VEC, TREE_VEC_LENGTH. */ -extern size_t tree_size (tree); +extern size_t tree_size (const_tree); /* Compute the number of bytes occupied by a tree with code CODE. This function cannot be used for TREE_VEC or PHI_NODE codes, which are of @@ -3759,7 +3759,7 @@ extern tree build_vector_from_ctor (tree, VEC(constructor_elt,gc) *); extern tree build_constructor (tree, VEC(constructor_elt,gc) *); extern tree build_constructor_single (tree, tree, tree); extern tree build_constructor_from_list (tree, tree); -extern tree build_real_from_int_cst (tree, tree); +extern tree build_real_from_int_cst (tree, const_tree); extern tree build_complex (tree, tree, tree); extern tree build_one_cst (tree); extern tree build_string (int, const char *); @@ -3811,22 +3811,22 @@ extern tree build_method_type (tree, tree); extern tree build_offset_type (tree, tree); extern tree build_complex_type (tree); extern tree build_resx (int); -extern tree array_type_nelts (tree); +extern tree array_type_nelts (const_tree); extern bool in_array_bounds_p (tree); extern bool range_in_array_bounds_p (tree); extern tree value_member (tree, tree); -extern tree purpose_member (tree, tree); +extern tree purpose_member (const_tree, tree); extern int attribute_list_equal (tree, tree); extern int attribute_list_contained (tree, tree); -extern int tree_int_cst_equal (tree, tree); -extern int tree_int_cst_lt (tree, tree); -extern int tree_int_cst_compare (tree, tree); -extern int host_integerp (tree, int); -extern HOST_WIDE_INT tree_low_cst (tree, int); -extern int tree_int_cst_msb (tree); -extern int tree_int_cst_sgn (tree); +extern int tree_int_cst_equal (const_tree, const_tree); +extern int tree_int_cst_lt (const_tree, const_tree); +extern int tree_int_cst_compare (const_tree, const_tree); +extern int host_integerp (const_tree, int); +extern HOST_WIDE_INT tree_low_cst (const_tree, int); +extern int tree_int_cst_msb (const_tree); +extern int tree_int_cst_sgn (const_tree); extern int tree_int_cst_sign_bit (tree); extern bool tree_expr_nonnegative_p (tree); extern bool tree_expr_nonnegative_warnv_p (tree, bool *); @@ -3926,7 +3926,7 @@ extern tree merge_type_attributes (tree, tree); /* Given a tree node and a string, return nonzero if the tree node is a valid attribute name for the string. */ -extern int is_attribute_p (const char *, tree); +extern int is_attribute_p (const char *, const_tree); /* Given an attribute name and a list of attributes, return the list element of the attribute or NULL_TREE if not found. */ @@ -3954,7 +3954,7 @@ extern tree handle_dll_attribute (tree *, tree, tree, int, bool *); /* Check whether CAND is suitable to be returned from get_qualified_type (BASE, TYPE_QUALS). */ -extern bool check_qualified_type (tree, tree, int); +extern bool check_qualified_type (const_tree, const_tree, int); /* Return a version of the TYPE, qualified as indicated by the TYPE_QUALS, if one exists. If no qualified version exists yet, @@ -4076,17 +4076,17 @@ extern enum machine_mode mode_for_size_tree (tree, enum mode_class, int); extern tree non_lvalue (tree); extern tree convert (tree, tree); -extern unsigned int expr_align (tree); +extern unsigned int expr_align (const_tree); extern tree expr_first (tree); extern tree expr_last (tree); extern tree expr_only (tree); extern tree size_in_bytes (tree); -extern HOST_WIDE_INT int_size_in_bytes (tree); +extern HOST_WIDE_INT int_size_in_bytes (const_tree); extern HOST_WIDE_INT max_int_size_in_bytes (tree); -extern tree bit_position (tree); -extern HOST_WIDE_INT int_bit_position (tree); -extern tree byte_position (tree); -extern HOST_WIDE_INT int_byte_position (tree); +extern tree bit_position (const_tree); +extern HOST_WIDE_INT int_bit_position (const_tree); +extern tree byte_position (const_tree); +extern HOST_WIDE_INT int_byte_position (const_tree); /* Define data structures, macros, and functions for handling sizes and the various types used to represent sizes. */ @@ -4155,16 +4155,16 @@ extern tree nreverse (tree); /* Returns the length of a chain of nodes (number of chain pointers to follow before reaching a null pointer). */ -extern int list_length (tree); +extern int list_length (const_tree); /* Returns the number of FIELD_DECLs in a type. */ -extern int fields_length (tree); +extern int fields_length (const_tree); /* Given an initializer INIT, return TRUE if INIT is zero or some aggregate of zeros. Otherwise return FALSE. */ -extern bool initializer_zerop (tree); +extern bool initializer_zerop (const_tree); /* Examine CTOR to discover: * how many scalar fields are set to nonzero values, @@ -4184,29 +4184,29 @@ extern HOST_WIDE_INT count_type_elements (tree, bool); /* integer_zerop (tree x) is nonzero if X is an integer constant of value 0. */ -extern int integer_zerop (tree); +extern int integer_zerop (const_tree); /* integer_onep (tree x) is nonzero if X is an integer constant of value 1. */ -extern int integer_onep (tree); +extern int integer_onep (const_tree); /* integer_all_onesp (tree x) is nonzero if X is an integer constant all of whose significant bits are 1. */ -extern int integer_all_onesp (tree); +extern int integer_all_onesp (const_tree); /* integer_pow2p (tree x) is nonzero is X is an integer constant with exactly one bit 1. */ -extern int integer_pow2p (tree); +extern int integer_pow2p (const_tree); /* integer_nonzerop (tree x) is nonzero if X is an integer constant with a nonzero value. */ -extern int integer_nonzerop (tree); +extern int integer_nonzerop (const_tree); -extern bool cst_and_fits_in_hwi (tree); -extern tree num_ending_zeros (tree); +extern bool cst_and_fits_in_hwi (const_tree); +extern tree num_ending_zeros (const_tree); /* staticp (tree x) is nonzero if X is a reference to data allocated at a fixed address in memory. Returns the outermost data. */ @@ -4226,7 +4226,7 @@ extern tree skip_simple_arithmetic (tree); /* Return which tree structure is used by T. */ -enum tree_node_structure_enum tree_node_structure (tree); +enum tree_node_structure_enum tree_node_structure (const_tree); /* Return 1 if EXP contains a PLACEHOLDER_EXPR; i.e., if it represents a size or offset that depends on a field within a record. @@ -4323,7 +4323,7 @@ extern bool contains_packed_reference (tree exp); /* Return 1 if T is an expression that get_inner_reference handles. */ -extern int handled_component_p (tree); +extern int handled_component_p (const_tree); /* Return a tree of sizetype representing the size, in bytes, of the element of EXP, an ARRAY_REF. */ @@ -4348,18 +4348,18 @@ extern tree component_ref_field_offset (tree); /* Given a DECL or TYPE, return the scope in which it was declared, or NUL_TREE if there is no containing scope. */ -extern tree get_containing_scope (tree); +extern tree get_containing_scope (const_tree); /* Return the FUNCTION_DECL which provides this _DECL with its context, or zero if none. */ -extern tree decl_function_context (tree); +extern tree decl_function_context (const_tree); /* Return the RECORD_TYPE, UNION_TYPE, or QUAL_UNION_TYPE which provides this _DECL with its context, or zero if none. */ -extern tree decl_type_context (tree); +extern tree decl_type_context (const_tree); /* Return 1 if EXPR is the real constant zero. */ -extern int real_zerop (tree); +extern int real_zerop (const_tree); /* Declare commonly used variables for tree structure. */ @@ -4381,7 +4381,7 @@ extern void clean_symbol_name (char *); extern tree get_file_function_name (const char *); extern tree get_callee_fndecl (tree); extern void change_decl_assembler_name (tree, tree); -extern int type_num_arguments (tree); +extern int type_num_arguments (const_tree); extern bool associative_tree_code (enum tree_code); extern bool commutative_tree_code (enum tree_code); extern tree upper_bound_in_type (tree, tree); @@ -4454,7 +4454,7 @@ extern tree force_fit_type_double (tree, unsigned HOST_WIDE_INT, HOST_WIDE_INT, int, bool); extern int fit_double_type (unsigned HOST_WIDE_INT, HOST_WIDE_INT, - unsigned HOST_WIDE_INT *, HOST_WIDE_INT *, tree); + unsigned HOST_WIDE_INT *, HOST_WIDE_INT *, const_tree); extern int add_double_with_sign (unsigned HOST_WIDE_INT, HOST_WIDE_INT, unsigned HOST_WIDE_INT, HOST_WIDE_INT, unsigned HOST_WIDE_INT *, HOST_WIDE_INT *, @@ -4563,20 +4563,20 @@ extern int alias_sets_must_conflict_p (HOST_WIDE_INT, HOST_WIDE_INT); extern int objects_must_conflict_p (tree, tree); /* In tree.c */ -extern int really_constant_p (tree); -extern int int_fits_type_p (tree, tree); +extern int really_constant_p (const_tree); +extern int int_fits_type_p (const_tree, const_tree); extern void get_type_static_bounds (tree, mpz_t, mpz_t); extern bool variably_modified_type_p (tree, tree); -extern int tree_log2 (tree); -extern int tree_floor_log2 (tree); +extern int tree_log2 (const_tree); +extern int tree_floor_log2 (const_tree); extern int simple_cst_equal (tree, tree); -extern hashval_t iterative_hash_expr (tree, hashval_t); -extern int compare_tree_int (tree, unsigned HOST_WIDE_INT); +extern hashval_t iterative_hash_expr (const_tree, hashval_t); +extern int compare_tree_int (const_tree, unsigned HOST_WIDE_INT); extern int type_list_equal (tree, tree); -extern int chain_member (tree, tree); +extern int chain_member (const_tree, const_tree); extern tree type_hash_lookup (unsigned int, tree); extern void type_hash_add (unsigned int, tree); -extern int simple_cst_list_equal (tree, tree); +extern int simple_cst_list_equal (const_tree, const_tree); extern void dump_tree_statistics (void); extern void expand_function_end (void); extern void expand_function_start (tree); @@ -4586,16 +4586,16 @@ extern void recompute_tree_invariant_for_addr_expr (tree); extern bool needs_to_live_in_memory (tree); extern tree reconstruct_complex_type (tree, tree); -extern int real_onep (tree); -extern int real_twop (tree); -extern int real_minus_onep (tree); +extern int real_onep (const_tree); +extern int real_twop (const_tree); +extern int real_minus_onep (const_tree); extern void init_ttree (void); extern void build_common_tree_nodes (bool, bool); extern void build_common_tree_nodes_2 (int); extern void build_common_builtin_nodes (void); extern tree build_nonstandard_integer_type (unsigned HOST_WIDE_INT, int); extern tree build_range_type (tree, tree, tree); -extern HOST_WIDE_INT int_cst_value (tree); +extern HOST_WIDE_INT int_cst_value (const_tree); extern tree build_addr (tree, tree); extern bool fields_compatible_p (tree, tree); |