aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree.h')
-rw-r--r--gcc/tree.h43
1 files changed, 41 insertions, 2 deletions
diff --git a/gcc/tree.h b/gcc/tree.h
index e1c52e135b3..18ecaf79a88 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -30,6 +30,7 @@ along with GCC; see the file COPYING3. If not see
#include "double-int.h"
#include "alias.h"
#include "options.h"
+#include "multi-target.h"
/* Codes of tree nodes */
@@ -1130,7 +1131,9 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int,
(CASE_LABEL_EXPR_CHECK (NODE)->base.addressable_flag)
#define PREDICT_EXPR_OUTCOME(NODE) \
- (PREDICT_EXPR_CHECK(NODE)->base.addressable_flag)
+ ((enum prediction) PREDICT_EXPR_CHECK(NODE)->base.addressable_flag)
+#define SET_PREDICT_EXPR_OUTCOME(NODE, OUTCOME) \
+ (PREDICT_EXPR_CHECK(NODE)->base.addressable_flag = (int) OUTCOME)
#define PREDICT_EXPR_PREDICTOR(NODE) \
((enum br_predictor)tree_low_cst (TREE_OPERAND (PREDICT_EXPR_CHECK (NODE), 0), 0))
@@ -4064,11 +4067,13 @@ extern tree make_accum_type (int, int, int);
#define make_or_reuse_sat_unsigned_accum_type(P) \
make_or_reuse_accum_type (P, 1, 1)
+START_TARGET_SPECIFIC
/* From expmed.c. Since rtl.h is included after tree.h, we can't
put the prototype here. Rtl.h does declare the prototype if
tree.h had been included. */
extern tree make_tree (tree, rtx);
+END_TARGET_SPECIFIC
/* Return a type like TTYPE except that its TYPE_ATTRIBUTES
is ATTRIBUTE.
@@ -4213,6 +4218,7 @@ extern tree build_qualified_type (tree, int);
extern tree build_distinct_type_copy (tree);
extern tree build_variant_type_copy (tree);
+START_TARGET_SPECIFIC
/* Finish up a builtin RECORD_TYPE. Give it a name and provide its
fields. Optionally specify an alignment, and then lay it out. */
@@ -4224,6 +4230,7 @@ extern void finish_builtin_struct (tree, const char *,
node, does nothing except for the first time. */
extern void layout_type (tree);
+END_TARGET_SPECIFIC
/* These functions allow a front-end to perform a manual layout of a
RECORD_TYPE. (For instance, if the placement of subsequent fields
@@ -4260,6 +4267,7 @@ typedef struct record_layout_info_s
int packed_maybe_necessary;
} *record_layout_info;
+START_TARGET_SPECIFIC
extern record_layout_info start_record_layout (tree);
extern tree bit_from_pos (tree, tree);
extern tree byte_from_pos (tree, tree);
@@ -4271,6 +4279,7 @@ extern void normalize_rli (record_layout_info);
extern void place_field (record_layout_info, tree);
extern void compute_record_mode (tree);
extern void finish_record_layout (record_layout_info, int);
+END_TARGET_SPECIFIC
/* Given a hashcode and a ..._TYPE node (for which the hashcode was made),
return a canonicalized ..._TYPE node, so that duplicates are not made.
@@ -4279,6 +4288,7 @@ extern void finish_record_layout (record_layout_info, int);
extern tree type_hash_canon (unsigned int, tree);
+START_TARGET_SPECIFIC
/* Given a VAR_DECL, PARM_DECL, RESULT_DECL or FIELD_DECL node,
calculates the DECL_SIZE, DECL_SIZE_UNIT, DECL_ALIGN and DECL_MODE
fields. Call this only once for any given decl node.
@@ -4300,6 +4310,7 @@ extern void relayout_decl (tree);
mode_for_size, but is passed a tree. */
extern enum machine_mode mode_for_size_tree (const_tree, enum mode_class, int);
+END_TARGET_SPECIFIC
/* Return an expr equal to X but certainly not valid as an lvalue. */
@@ -4347,9 +4358,11 @@ extern tree size_diffop (tree, tree);
extern tree round_up (tree, int);
extern tree round_down (tree, int);
+START_TARGET_SPECIFIC
extern tree get_pending_sizes (void);
extern void put_pending_size (tree);
extern void put_pending_sizes (tree);
+END_TARGET_SPECIFIC
/* Type for sizes of data-type. */
@@ -4400,6 +4413,7 @@ extern bool initializer_zerop (const_tree);
extern tree ctor_to_list (tree);
+START_TARGET_SPECIFIC
/* Examine CTOR to discover:
* how many scalar fields are set to nonzero values,
and place it in *P_NZ_ELTS;
@@ -4413,6 +4427,7 @@ extern tree ctor_to_list (tree);
extern bool categorize_ctor_elements (const_tree, HOST_WIDE_INT *, HOST_WIDE_INT *,
bool *);
+END_TARGET_SPECIFIC
extern HOST_WIDE_INT count_type_elements (const_tree, bool);
@@ -4512,6 +4527,7 @@ extern tree substitute_placeholder_in_expr (tree, tree);
((EXP) == 0 || TREE_CONSTANT (EXP) ? (EXP) \
: substitute_placeholder_in_expr (EXP, OBJ))
+START_TARGET_SPECIFIC
/* variable_size (EXP) is like save_expr (EXP) except that it
is for the special case of something that is part of a
variable size for a data type. It makes special arrangements
@@ -4519,6 +4535,7 @@ extern tree substitute_placeholder_in_expr (tree, tree);
belongs to a function parameter. */
extern tree variable_size (tree);
+END_TARGET_SPECIFIC
/* stabilize_reference (EXP) returns a reference equivalent to EXP
but it can be used multiple times
@@ -4550,6 +4567,7 @@ extern tree get_narrower (tree, int *);
extern int handled_component_p (const_tree);
+START_TARGET_SPECIFIC
/* Given an expression EXP that is a handled_component_p,
look for the ultimate containing object, which is returned and specify
the access position and size. */
@@ -4557,6 +4575,7 @@ extern int handled_component_p (const_tree);
extern tree get_inner_reference (tree, HOST_WIDE_INT *, HOST_WIDE_INT *,
tree *, enum machine_mode *, int *, int *,
bool);
+END_TARGET_SPECIFIC
/* Given an expression EXP that may be a COMPONENT_REF, an ARRAY_REF or an
ARRAY_RANGE_REF, look for whether EXP or any nested component-refs within
@@ -4706,6 +4725,7 @@ extern bool auto_var_in_fn_p (const_tree, const_tree);
/* In gimplify.c */
extern tree unshare_expr (tree);
+START_TARGET_SPECIFIC
/* In stmt.c */
extern void expand_expr_stmt (tree);
@@ -4716,6 +4736,7 @@ extern void expand_goto (tree);
extern rtx expand_stack_save (void);
extern void expand_stack_restore (tree);
extern void expand_return (tree);
+END_TARGET_SPECIFIC
/* In tree-eh.c */
extern void using_eh_for_cleanups (void);
@@ -4863,6 +4884,7 @@ truth_value_p (enum tree_code code)
}
+START_TARGET_SPECIFIC
/* In builtins.c */
extern tree fold_call_expr (tree, bool);
extern tree fold_builtin_fputs (tree, tree, bool, bool, tree);
@@ -4881,7 +4903,6 @@ extern tree fold_builtin_call_array (tree, tree, int, tree *);
extern void debug_fold_checksum (const_tree);
extern tree build_call_expr (tree, int, ...);
extern tree mathfn_built_in (tree, enum built_in_function fn);
-extern tree strip_float_extensions (tree);
extern tree c_strlen (tree, int);
extern tree std_gimplify_va_arg_expr (tree, tree, gimple_seq *, gimple_seq *);
extern tree build_va_arg_indirect_ref (tree);
@@ -4892,6 +4913,7 @@ extern int get_pointer_alignment (tree, unsigned int);
extern int get_object_alignment (tree, unsigned int, unsigned int);
extern tree fold_call_stmt (gimple, bool);
extern tree gimple_fold_builtin_snprintf_chk (gimple, tree, enum built_in_function);
+END_TARGET_SPECIFIC
/* In convert.c */
extern tree strip_float_extensions (tree);
@@ -4919,10 +4941,12 @@ extern tree type_hash_lookup (unsigned int, tree);
extern void type_hash_add (unsigned int, tree);
extern int simple_cst_list_equal (const_tree, const_tree);
extern void dump_tree_statistics (void);
+START_TARGET_SPECIFIC
extern void expand_function_end (void);
extern void expand_function_start (tree);
extern void stack_protect_prologue (void);
extern void stack_protect_epilogue (void);
+END_TARGET_SPECIFIC
extern void recompute_tree_invariant_for_addr_expr (tree);
extern bool needs_to_live_in_memory (const_tree);
extern tree reconstruct_complex_type (tree, tree);
@@ -4948,12 +4972,16 @@ extern tree *tree_block (tree);
extern location_t *block_nonartificial_location (tree);
extern location_t tree_nonartificial_location (tree);
+START_TARGET_SPECIFIC
/* In function.c */
extern void expand_main_function (void);
extern void init_dummy_function_start (void);
extern void expand_dummy_function_end (void);
extern unsigned int init_function_for_compilation (void);
+END_TARGET_SPECIFIC
+/* Allocate_struct_function uses targetm->name. */
extern void allocate_struct_function (tree, bool);
+START_TARGET_SPECIFIC
extern void push_struct_function (tree fndecl);
extern void init_function_start (tree);
extern bool use_register_for_decl (const_tree);
@@ -4967,11 +4995,14 @@ extern int aggregate_value_p (const_tree, const_tree);
extern void push_function_context (void);
extern void pop_function_context (void);
extern gimple_seq gimplify_parameters (void);
+END_TARGET_SPECIFIC
+START_TARGET_SPECIFIC
/* In print-rtl.c */
#ifdef BUFSIZ
extern void print_rtl (FILE *, const_rtx);
#endif
+END_TARGET_SPECIFIC
/* In print-tree.c */
extern void debug_tree (tree);
@@ -5048,6 +5079,7 @@ extern tree decl_attributes (tree *, tree, int);
extern void set_decl_abstract_flags (tree, int);
extern void set_decl_origin_self (tree);
+START_TARGET_SPECIFIC
/* In stor-layout.c */
extern void set_min_and_max_values_for_integral_type (tree, int, bool);
extern void fixup_signed_type (tree);
@@ -5082,6 +5114,7 @@ extern void expand_decl (tree);
/* Silly ifdef to avoid having all includers depend on hard-reg-set.h. */
extern tree tree_overlaps_hard_reg_set (tree, HARD_REG_SET *);
#endif
+END_TARGET_SPECIFIC
/* Interface of the DWARF2 unwind info support. */
@@ -5145,8 +5178,10 @@ extern tree walk_tree_without_duplicates_1 (tree*, walk_tree_fn, void*,
/* Assign the RTX to declaration. */
+START_TARGET_SPECIFIC
extern void set_decl_rtl (tree, rtx);
extern void set_decl_incoming_rtl (tree, rtx, bool);
+END_TARGET_SPECIFIC
/* Enum and arrays used for tree allocation stats.
Keep in sync with tree.c:tree_node_kind_names. */
@@ -5249,9 +5284,13 @@ extern void init_object_sizes (void);
extern void fini_object_sizes (void);
extern unsigned HOST_WIDE_INT compute_builtin_object_size (tree, int);
+START_TARGET_SPECIFIC
/* In expr.c. */
+
extern unsigned HOST_WIDE_INT highest_pow2_factor (const_tree);
+END_TARGET_SPECIFIC
+
/* In tree-inline.c. */
void init_inline_once (void);