Mercurial > hg > CbC > CbC_gcc
diff gcc/langhooks.h @ 55:77e2b8dfacca gcc-4.4.5
update it from 4.4.3 to 4.5.0
author | ryoma <e075725@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 12 Feb 2010 23:39:51 +0900 |
parents | a06113de4d67 |
children | b7f97abdc517 |
line wrap: on
line diff
--- a/gcc/langhooks.h Sun Feb 07 18:28:00 2010 +0900 +++ b/gcc/langhooks.h Fri Feb 12 23:39:51 2010 +0900 @@ -1,5 +1,5 @@ /* The lang_hooks data structure. - Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 + Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of GCC. @@ -49,9 +49,6 @@ /* 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 *); - - /* Emit thunks associated to function. */ - void (*emit_associated_thunks) (tree); }; /* The following hooks are used by tree-dump.c. */ @@ -91,6 +88,9 @@ e.g. C++ template implicit specializations. */ bool (*generic_p) (const_tree); + /* Returns the TREE_VEC of elements of a given generic argument pack. */ + tree (*get_argument_pack_elems) (const_tree); + /* Given a type, apply default promotions to unnamed function arguments and return the new type. Return the same type if no change. Required by any language that supports variadic @@ -130,6 +130,9 @@ for the debugger about the array bounds, strides, etc. */ bool (*get_array_descr_info) (const_tree, struct array_descr_info *); + /* Fill in information for the debugger about the bounds of TYPE. */ + void (*get_subrange_bounds) (const_tree, tree *, tree *); + /* 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 @@ -159,6 +162,20 @@ /* Returns the chain of decls so far in the current scope level. */ tree (*getdecls) (void); + /* Returns true if DECL is explicit member function. */ + bool (*function_decl_explicit_p) (tree); + + /* Returns True if the parameter is a generic parameter decl + of a generic type, e.g a template template parameter for the C++ FE. */ + bool (*generic_generic_parameter_decl_p) (const_tree); + + /* Determine if a function parameter got expanded from a + function parameter pack. */ + bool (*function_parm_expanded_from_pack_p) (tree, tree); + + /* Returns the generic declaration of a generic function instantiations. */ + tree (*get_generic_function_decl) (const_tree); + /* Returns true when we should warn for an unused global DECL. We will already have checked that it has static binding. */ bool (*warn_unused_global) (const_tree); @@ -170,15 +187,6 @@ /* True if this decl may be called via a sibcall. */ bool (*ok_for_sibcall) (const_tree); - /* Return the COMDAT group into which this DECL should be placed. - It is known that the DECL belongs in *some* COMDAT group when - this hook is called. The return value will be used immediately, - but not explicitly deallocated, so implementations should not use - xmalloc to allocate the string returned. (Typically, the return - value will be the string already stored in an - IDENTIFIER_NODE.) */ - const char * (*comdat_group) (tree); - /* True if OpenMP should privatize what this DECL points to rather than the DECL itself. */ bool (*omp_privatize_by_reference) (const_tree); @@ -220,6 +228,23 @@ void (*omp_finish_clause) (tree clause); }; +/* Language hooks related to LTO serialization. */ + +struct lang_hooks_for_lto +{ + /* Begin a new LTO section named NAME. */ + void (*begin_section) (const char *name); + + /* Write DATA of length LEN to the currently open LTO section. BLOCK is a + pointer to the dynamically allocated memory containing DATA. The + append_data function is responsible for freeing it when it is no longer + needed. */ + void (*append_data) (const void *data, size_t len, void *block); + + /* End the previously begun LTO section. */ + void (*end_section) (void); +}; + /* Language-specific hooks. See langhooks-def.h for defaults. */ struct lang_hooks @@ -231,6 +256,9 @@ identifier nodes long enough for the language-specific slots. */ size_t identifier_size; + /* Remove any parts of the tree that are used only by the FE. */ + void (*free_lang_data) (tree); + /* Determines the size of any language-specific tcc_constant or tcc_exceptional nodes. Since it is called from make_node, the only information available is the tree code. Expected to die @@ -290,22 +318,10 @@ Returns -1 if the language does nothing special for it. */ alias_set_type (*get_alias_set) (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 *); - /* Function to finish handling an incomplete decl at the end of compilation. Default hook is does nothing. */ void (*finish_incomplete_decl) (tree); - /* Mark EXP saying that we need to be able to take the address of - it; it should not be allocated in a register. Return true if - successful. */ - bool (*mark_addressable) (tree); - - /* Hook called by staticp for language-specific tree codes. */ - tree (*staticp) (tree); - /* Replace the DECL_LANG_SPECIFIC data, which may be NULL, of the DECL_NODE with a newly GC-allocated copy. */ void (*dup_lang_specific_decl) (tree); @@ -336,7 +352,10 @@ information will be printed: 0: DECL_NAME, demangled as necessary. 1: and scope information. 2: and any other information that might be interesting, such as function parameter - types in C++. */ + types in C++. The name is in the internal character set and + needs to be converted to the locale character set of diagnostics, + or to the execution character set for strings such as + __PRETTY_FUNCTION__. */ const char *(*decl_printable_name) (tree decl, int verbosity); /* Computes the dwarf-2/3 name for a tree. VERBOSITY determines what @@ -353,12 +372,6 @@ void (*print_error_function) (struct diagnostic_context *, const char *, struct diagnostic_info *); - /* Called from expr_size to calculate the size of the value of an - expression in a language-dependent way. Returns a tree for the size - in bytes. A frontend can call lhd_expr_size to get the default - semantics in cases that it doesn't want to handle specially. */ - tree (*expr_size) (const_tree); - /* Convert a character from the host's to the target's character set. The character should be in what C calls the "basic source character set" (roughly, the set of characters defined by plain @@ -387,6 +400,19 @@ struct lang_hooks_for_types types; + struct lang_hooks_for_lto lto; + + /* Returns the generic parameters of an instantiation of + a generic type or decl, e.g. C++ template instantiation. */ + tree (*get_innermost_generic_parms) (const_tree); + + /* Returns the TREE_VEC of arguments of an instantiation + of a generic type of decl, e.g. C++ template instantiation. */ + tree (*get_innermost_generic_args) (const_tree); + + /* Determine if a tree is a function parameter pack. */ + bool (*function_parameter_pack_p) (const_tree); + /* Perform language-specific gimplification on the argument. Returns an enum gimplify_status, though we can't see that type here. */ int (*gimplify_expr) (tree *, gimple_seq *, gimple_seq *); @@ -414,12 +440,22 @@ if in the process TREE_CONSTANT or TREE_SIDE_EFFECTS need updating. */ tree (*expr_to_decl) (tree expr, bool *tc, bool *se); + /* The EH personality function decl. */ + tree (*eh_personality) (void); + + /* Map a type to a runtime object to match type. */ + tree (*eh_runtime_type) (tree); + + /* True if this language uses __cxa_end_cleanup when the ARM EABI + is enabled. */ + bool eh_use_cxa_end_cleanup; + /* Whenever you add entries here, make sure you adjust langhooks-def.h and langhooks.c accordingly. */ }; /* Each front end provides its own. */ -extern const struct lang_hooks lang_hooks; +extern struct lang_hooks lang_hooks; extern tree add_builtin_function (const char *name, tree type, int function_code, enum built_in_class cl, const char *library_name,