/* The lang_hooks data structure.
- Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+ Copyright 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of GCC.
{
tree (*walk_subtrees) (tree *, int *,
tree (*) (tree *, int *, void *),
- void *, void *);
+ void *, struct pointer_set_t*);
int (*cannot_inline_tree_fn) (tree *);
int (*disregard_inline_limits) (tree);
tree (*add_pending_fn_decls) (void *, tree);
/* True if this decl may be called via a sibcall. */
bool (*ok_for_sibcall) (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);
};
/* Language-specific hooks. See langhooks-def.h for defaults. */
identifier nodes long enough for the language-specific slots. */
size_t identifier_size;
- /* Determines the size of any language-specific 'x' or 'c' nodes.
- Since it is called from make_node, the only information available
- is the tree code. Expected to abort on unrecognized codes. */
+ /* 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 abort
+ on unrecognized codes. */
size_t (*tree_size) (enum tree_code);
/* The first callback made to the front end, for simple
1 if handled, 0 otherwise. */
int (*expand_decl) (tree);
- /* Prepare expr to be an argument of a TRUTH_NOT_EXPR or other logical
- operation.
-
- This preparation consists of taking the ordinary representation
- of an expression expr and producing a valid tree boolean
- expression describing whether expr is nonzero. We could simply
- always do build_binary_op (NE_EXPR, expr, integer_zero_node, 1),
- but we optimize comparisons, &&, ||, and !.
-
- The result should be an expression of boolean type (if not an
- error_mark_node). */
- tree (*truthvalue_conversion) (tree);
-
/* Hook called by safe_from_p for language-specific tree codes. It is
up to the language front-end to install a hook if it has any such
codes that safe_from_p needs to know about. Since same_from_p will
this hook. It should output to stderr. */
void (*print_statistics) (void);
- /* Called by print_tree when there is a tree of class 'x' that it
- doesn't know how to display. */
+ /* Called by print_tree when there is a tree of class tcc_exceptional
+ that it doesn't know how to display. */
lang_print_tree_hook print_xnode;
- /* Called to print language-dependent parts of a class 'd', class
- 't', and IDENTIFIER_NODE nodes. */
+ /* Called to print language-dependent parts of tcc_decl, tcc_type,
+ and IDENTIFIER_NODE nodes. */
lang_print_tree_hook print_decl;
lang_print_tree_hook print_type;
lang_print_tree_hook print_identifier;
semantics in cases that it doesn't want to handle specially. */
tree (*expr_size) (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
+ old ASCII). The default is to return the character unchanged,
+ which is correct in most circumstances. Note that both argument
+ and result should be sign-extended under -fsigned-char,
+ zero-extended under -fno-signed-char. */
+ HOST_WIDE_INT (*to_target_charset) (HOST_WIDE_INT);
+
/* Pointers to machine-independent attribute tables, for front ends
using attribs.c. If one is NULL, it is ignored. Respectively, a
table of attributes specific to the language, a table of