X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Flanghooks.h;h=6a54b01f060362911358c51923e34942f9e8af37;hb=9ec0fbe12f5d88044672d79ff164eff1d2ec3f94;hp=8a442753b1f9c9ba4f9dabb76d9b5319106ad0e7;hpb=1fab06aaf36ca06985faf4a832f50a6de6eeab58;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/langhooks.h b/gcc/langhooks.h index 8a442753b1f..6a54b01f060 100644 --- a/gcc/langhooks.h +++ b/gcc/langhooks.h @@ -28,9 +28,14 @@ struct diagnostic_info; struct gimplify_omp_ctx; +struct array_descr_info; + /* A print hook for print_tree (). */ typedef void (*lang_print_tree_hook) (FILE *, tree, int indent); +enum classify_record + { RECORD_IS_STRUCT, RECORD_IS_CLASS, RECORD_IS_INTERFACE }; + /* The following hooks are documented in langhooks.c. Must not be NULL. */ @@ -43,32 +48,12 @@ struct lang_hooks_for_callgraph { /* The node passed is a language-specific tree node. If its contents are relevant to use of other declarations, mark them. */ - tree (*analyze_expr) (tree *, int *, tree); + tree (*analyze_expr) (tree *, int *); - /* Emmit thunks associated to function. */ + /* Emit thunks associated to function. */ void (*emit_associated_thunks) (tree); }; -/* Lang hooks for management of language-specific data or status - when entering / leaving functions etc. */ -struct lang_hooks_for_functions -{ - /* Called when entering a function. */ - void (*init) (struct function *); - - /* Called when leaving a function. */ - void (*final) (struct function *); - - /* Called when entering a nested function. */ - void (*enter_nested) (struct function *); - - /* Called when leaving a nested function. */ - void (*leave_nested) (struct function *); - - /* Determines if it's ok for a function to have no noreturn attribute. */ - bool (*missing_noreturn_ok_p) (tree); -}; - /* The following hooks are used by tree-dump.c. */ struct lang_hooks_for_tree_dump @@ -89,6 +74,11 @@ struct lang_hooks_for_types language-specific processing is required. */ tree (*make_type) (enum tree_code); + /* Return what kind of RECORD_TYPE this is, mainly for purposes of + debug information. If not defined, record types are assumed to + be structures. */ + enum classify_record (*classify_record) (tree); + /* Given MODE and UNSIGNEDP, return a suitable type-tree with that mode. */ tree (*type_for_mode) (enum machine_mode, int); @@ -136,6 +126,16 @@ struct lang_hooks_for_types FUNCTION_TYPEs. */ bool (*type_hash_eq) (const_tree, const_tree); + /* Return TRUE if TYPE uses a hidden descriptor and fills in information + for the debugger about the array bounds, strides, etc. */ + bool (*get_array_descr_info) (const_tree, struct array_descr_info *); + + /* If we requested a pointer to a vector, build up the pointers that + we stripped off while looking for the inner type. Similarly for + return values from functions. The argument TYPE is the top of the + chain, and BOTTOM is the new type which we will point to. */ + tree (*reconstruct_complex_type) (tree, tree); + /* Nonzero if types that are identical are to be hashed so that only one copy is kept. If a language requires unique types for each user-specified type, such as Ada, this should be set to TRUE. */ @@ -150,11 +150,6 @@ struct lang_hooks_for_decls returns -1 for an undocumented reason used in stor-layout.c. */ int (*global_bindings_p) (void); - /* Insert BLOCK at the end of the list of subblocks of the - current binding level. This is used when a BIND_EXPR is expanded, - to handle the BLOCK node inside the BIND_EXPR. */ - void (*insert_block) (tree); - /* Function to add a decl to the current scope level. Takes one argument, a decl to add. Returns that decl, or, if the same symbol is already declared, may return a different decl for that @@ -280,18 +275,13 @@ struct lang_hooks parsers to dump debugging information during parsing. */ void (*parse_file) (int); - /* Called immediately after parsing to clear the binding stack. */ - void (*clear_binding_stack) (void); + /* Determines if it's ok for a function to have no noreturn attribute. */ + bool (*missing_noreturn_ok_p) (tree); /* Called to obtain the alias set to be used for an expression or type. Returns -1 if the language does nothing special for it. */ alias_set_type (*get_alias_set) (tree); - /* Called with an expression that is to be processed as a constant. - Returns either the same expression or a language-independent - constant equivalent to its input. */ - tree (*expand_constant) (tree); - /* Called by expand_expr for language-specific tree codes. Fourth argument is actually an enum expand_modifier. */ rtx (*expand_expr) (tree, rtx, enum machine_mode, int, rtx *); @@ -323,10 +313,6 @@ struct lang_hooks assembler does not talk about it. */ void (*set_decl_assembler_name) (tree); - /* Nonzero if operations on types narrower than their mode should - have their results reduced to the precision of the type. */ - bool reduce_bit_field_operations; - /* Nonzero if this front end does not generate a dummy BLOCK between the outermost scope of the function and the FUNCTION_DECL. See is_body_block in stmt.c, and its callers. */ @@ -395,9 +381,6 @@ struct lang_hooks const struct attribute_spec *common_attribute_table; const struct attribute_spec *format_attribute_table; - /* Function-related language hooks. */ - struct lang_hooks_for_functions function; - struct lang_hooks_for_tree_inlining tree_inlining; struct lang_hooks_for_callgraph callgraph; @@ -423,10 +406,9 @@ struct lang_hooks void (*init_ts) (void); /* Called by recompute_tree_invariant_for_addr_expr to go from EXPR - to a contained expression or DECL, possibly updating *TC, *TI or - *SE if in the process TREE_CONSTANT, TREE_INVARIANT or - TREE_SIDE_EFFECTS need updating. */ - tree (*expr_to_decl) (tree expr, bool *tc, bool *ti, bool *se); + to a contained expression or DECL, possibly updating *TC or *SE + if in the process TREE_CONSTANT or TREE_SIDE_EFFECTS need updating. */ + tree (*expr_to_decl) (tree expr, bool *tc, bool *se); /* Whenever you add entries here, make sure you adjust langhooks-def.h and langhooks.c accordingly. */