mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-10 10:37:02 +08:00
c-common.c (c_expand_expr): Fix prototype.
* c-common.c (c_expand_expr): Fix prototype. * c-common.h (c_expand_expr): Always declare, update. * c-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine. * c-objc-common.c (c_objc_common_init): No global hook. * expr.c (expand_expr): Use langhook. * expr.h (enum expand_modifier): Conditionally declare. * langhooks-def.h (lhd_expand_expr, LANG_HOOKS_EXPAND_EXPR): New. (LANG_HOOKS_INITIALIZER): Update. * langhooks.c (lhd_expand_expr): New. * langhooks.h (struct lang_hooks): New hook. * toplev.c (lang_expand_expr_t, lang_expand_expr): Delete. (lang_independent_init): Don't default hook. ada: * misc.c (LANG_HOOKS_EXPAND_EXPR): Redefine. (gnat_init): Don't set hook. (gnat_expand_expr): Fix prototype. cp: * cp-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine. * cp-tree.h (init_cplus_expand): Remove. (cxx_expand_expr): New. * expr.c (cplus_expand_expr): Rename cxx_expand_expr, fix prototype. (init_cplus_expand): Remove. * lex.c (cxx_init): Don't call init_cplus_expand. java: * expr.c (java_lang_expand_expr): Rename java_expand_expr, fix prototype. * java-tree.h (java_lang_expand_expr): Similarly. * lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine. (java_init): Don't set hook. objc: * objc-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine. From-SVN: r51462
This commit is contained in:
parent
2b613c6ac3
commit
c9d892a83f
@ -1,3 +1,20 @@
|
||||
2002-03-27 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* c-common.c (c_expand_expr): Fix prototype.
|
||||
* c-common.h (c_expand_expr): Always declare, update.
|
||||
* c-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
|
||||
* c-objc-common.c (c_objc_common_init): No global hook.
|
||||
* expr.c (expand_expr): Use langhook.
|
||||
* expr.h (enum expand_modifier): Conditionally declare.
|
||||
* langhooks-def.h (lhd_expand_expr, LANG_HOOKS_EXPAND_EXPR): New.
|
||||
(LANG_HOOKS_INITIALIZER): Update.
|
||||
* langhooks.c (lhd_expand_expr): New.
|
||||
* langhooks.h (struct lang_hooks): New hook.
|
||||
* toplev.c (lang_expand_expr_t, lang_expand_expr): Delete.
|
||||
(lang_independent_init): Don't default hook.
|
||||
objc:
|
||||
* objc-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
|
||||
|
||||
2002-03-27 Richard Henderson <rth@redhat.com>
|
||||
|
||||
PR target/6054
|
||||
|
@ -1,3 +1,9 @@
|
||||
2002-03-27 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* misc.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
|
||||
(gnat_init): Don't set hook.
|
||||
(gnat_expand_expr): Fix prototype.
|
||||
|
||||
2002-03-27 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* misc.c (ggc_p): Remove.
|
||||
|
@ -108,6 +108,8 @@ static void gnat_mark_tree PARAMS ((tree));
|
||||
#define LANG_HOOKS_HONOR_READONLY 1
|
||||
#undef LANG_HOOKS_GET_ALIAS_SET
|
||||
#define LANG_HOOKS_GET_ALIAS_SET gnat_get_alias_set
|
||||
#undef LANG_HOOKS_EXPAND_EXPR
|
||||
#define LANG_HOOKS_EXPAND_EXPR gnat_expand_expr
|
||||
#undef LANG_HOOKS_PRINT_DECL
|
||||
#define LANG_HOOKS_PRINT_DECL gnat_print_decl
|
||||
#undef LANG_HOOKS_PRINT_TYPE
|
||||
@ -163,7 +165,7 @@ extern char **gnat_argv;
|
||||
|
||||
static void internal_error_function PARAMS ((const char *, va_list *));
|
||||
static rtx gnat_expand_expr PARAMS ((tree, rtx, enum machine_mode,
|
||||
enum expand_modifier));
|
||||
int));
|
||||
static void gnat_adjust_rli PARAMS ((record_layout_info));
|
||||
|
||||
/* Declare functions we use as part of startup. */
|
||||
@ -358,8 +360,6 @@ gnat_init (filename)
|
||||
Define the additional tree codes here. This isn't the best place to put
|
||||
it, but it's where g++ does it. */
|
||||
|
||||
lang_expand_expr = gnat_expand_expr;
|
||||
|
||||
gnat_init_decl_processing ();
|
||||
|
||||
/* Add the input filename as the last argument. */
|
||||
@ -503,7 +503,7 @@ gnat_expand_expr (exp, target, tmode, modifier)
|
||||
tree exp;
|
||||
rtx target;
|
||||
enum machine_mode tmode;
|
||||
enum expand_modifier modifier;
|
||||
int modifier; /* Actually an enum expand_modifier. */
|
||||
{
|
||||
tree type = TREE_TYPE (exp);
|
||||
tree new;
|
||||
|
@ -3588,7 +3588,7 @@ c_expand_expr (exp, target, tmode, modifier)
|
||||
tree exp;
|
||||
rtx target;
|
||||
enum machine_mode tmode;
|
||||
enum expand_modifier modifier;
|
||||
int modifier; /* Actually enum_modifier. */
|
||||
{
|
||||
switch (TREE_CODE (exp))
|
||||
{
|
||||
|
@ -842,12 +842,9 @@ extern tree finish_label_address_expr PARAMS ((tree));
|
||||
different implementations. Used in c-common.c. */
|
||||
extern tree lookup_label PARAMS ((tree));
|
||||
|
||||
/* enum expand_modified is in expr.h, as is the macro below. */
|
||||
|
||||
#ifdef QUEUED_VAR
|
||||
extern rtx c_expand_expr PARAMS ((tree, rtx, enum machine_mode,
|
||||
enum expand_modifier));
|
||||
#endif
|
||||
extern rtx c_expand_expr PARAMS ((tree, rtx,
|
||||
enum machine_mode,
|
||||
int));
|
||||
|
||||
extern int c_safe_from_p PARAMS ((rtx, tree));
|
||||
|
||||
|
@ -52,6 +52,8 @@ static void c_post_options PARAMS ((void));
|
||||
#define LANG_HOOKS_SAFE_FROM_P c_safe_from_p
|
||||
#undef LANG_HOOKS_MARK_TREE
|
||||
#define LANG_HOOKS_MARK_TREE c_mark_tree
|
||||
#undef LANG_HOOKS_EXPAND_EXPR
|
||||
#define LANG_HOOKS_EXPAND_EXPR c_expand_expr
|
||||
#undef LANG_HOOKS_PARSE_FILE
|
||||
#define LANG_HOOKS_PARSE_FILE c_common_parse_file
|
||||
#undef LANG_HOOKS_STATICP
|
||||
|
@ -225,7 +225,6 @@ c_objc_common_init (filename)
|
||||
save_lang_status = &push_c_function_context;
|
||||
restore_lang_status = &pop_c_function_context;
|
||||
mark_lang_status = &mark_c_function_context;
|
||||
lang_expand_expr = c_expand_expr;
|
||||
lang_expand_decl_stmt = c_expand_decl_stmt;
|
||||
|
||||
/* These were not defined in the Objective-C front end, but I'm
|
||||
|
@ -1,3 +1,13 @@
|
||||
2002-03-27 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* cp-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
|
||||
* cp-tree.h (init_cplus_expand): Remove.
|
||||
(cxx_expand_expr): New.
|
||||
* expr.c (cplus_expand_expr): Rename cxx_expand_expr,
|
||||
fix prototype.
|
||||
(init_cplus_expand): Remove.
|
||||
* lex.c (cxx_init): Don't call init_cplus_expand.
|
||||
|
||||
2002-03-26 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/4884.
|
||||
|
@ -49,6 +49,8 @@ static bool ok_to_generate_alias_set_for_type PARAMS ((tree));
|
||||
#define LANG_HOOKS_GET_ALIAS_SET cxx_get_alias_set
|
||||
#undef LANG_HOOKS_EXPAND_CONSTANT
|
||||
#define LANG_HOOKS_EXPAND_CONSTANT cplus_expand_constant
|
||||
#undef LANG_HOOKS_EXPAND_EXPR
|
||||
#define LANG_HOOKS_EXPAND_EXPR cxx_expand_expr
|
||||
#undef LANG_HOOKS_SAFE_FROM_P
|
||||
#define LANG_HOOKS_SAFE_FROM_P c_safe_from_p
|
||||
#undef LANG_HOOKS_PARSE_FILE
|
||||
|
@ -3907,8 +3907,10 @@ extern void check_handlers PARAMS ((tree));
|
||||
extern void choose_personality_routine PARAMS ((enum languages));
|
||||
|
||||
/* in expr.c */
|
||||
extern void init_cplus_expand PARAMS ((void));
|
||||
extern int extract_init PARAMS ((tree, tree));
|
||||
extern rtx cxx_expand_expr PARAMS ((tree, rtx,
|
||||
enum machine_mode,
|
||||
int));
|
||||
extern tree cplus_expand_constant PARAMS ((tree));
|
||||
|
||||
/* friend.c */
|
||||
|
@ -32,9 +32,6 @@ Boston, MA 02111-1307, USA. */
|
||||
#include "except.h"
|
||||
#include "tm_p.h"
|
||||
|
||||
static rtx cplus_expand_expr PARAMS ((tree, rtx, enum machine_mode,
|
||||
enum expand_modifier));
|
||||
|
||||
/* Hook used by output_constant to expand language-specific
|
||||
constants. */
|
||||
|
||||
@ -79,12 +76,12 @@ cplus_expand_constant (cst)
|
||||
|
||||
/* Hook used by expand_expr to expand language-specific tree codes. */
|
||||
|
||||
static rtx
|
||||
cplus_expand_expr (exp, target, tmode, modifier)
|
||||
rtx
|
||||
cxx_expand_expr (exp, target, tmode, modifier)
|
||||
tree exp;
|
||||
rtx target;
|
||||
enum machine_mode tmode;
|
||||
enum expand_modifier modifier;
|
||||
int modifier; /* Actually an enum expand_modifier. */
|
||||
{
|
||||
tree type = TREE_TYPE (exp);
|
||||
register enum machine_mode mode = TYPE_MODE (type);
|
||||
@ -131,12 +128,6 @@ cplus_expand_expr (exp, target, tmode, modifier)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void
|
||||
init_cplus_expand ()
|
||||
{
|
||||
lang_expand_expr = cplus_expand_expr;
|
||||
}
|
||||
|
||||
int
|
||||
extract_init (decl, init)
|
||||
tree decl ATTRIBUTE_UNUSED, init ATTRIBUTE_UNUSED;
|
||||
|
@ -647,7 +647,6 @@ cxx_init (filename)
|
||||
init_reswords ();
|
||||
init_spew ();
|
||||
init_tree ();
|
||||
init_cplus_expand ();
|
||||
init_cp_semantics ();
|
||||
|
||||
lang_unsafe_for_reeval = c_unsafe_for_reeval;
|
||||
|
@ -7240,7 +7240,8 @@ expand_expr (exp, target, tmode, modifier)
|
||||
{
|
||||
if (DECL_BUILT_IN_CLASS (TREE_OPERAND (TREE_OPERAND (exp, 0), 0))
|
||||
== BUILT_IN_FRONTEND)
|
||||
return (*lang_expand_expr) (exp, original_target, tmode, modifier);
|
||||
return (*lang_hooks.expand_expr)
|
||||
(exp, original_target, tmode, modifier);
|
||||
else
|
||||
return expand_builtin (exp, target, subtarget, tmode, ignore);
|
||||
}
|
||||
@ -8800,7 +8801,7 @@ expand_expr (exp, target, tmode, modifier)
|
||||
abort ();
|
||||
|
||||
default:
|
||||
return (*lang_expand_expr) (exp, original_target, tmode, modifier);
|
||||
return (*lang_hooks.expand_expr) (exp, original_target, tmode, modifier);
|
||||
}
|
||||
|
||||
/* Here to do an ordinary binary operator, generating an instruction
|
||||
|
@ -1,3 +1,11 @@
|
||||
2002-03-27 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* expr.c (java_lang_expand_expr): Rename java_expand_expr,
|
||||
fix prototype.
|
||||
* java-tree.h (java_lang_expand_expr): Similarly.
|
||||
* lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
|
||||
(java_init): Don't set hook.
|
||||
|
||||
2002-03-27 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
|
||||
|
||||
Fix for PR java/5850:
|
||||
|
@ -2480,11 +2480,11 @@ get_primitive_array_vtable (tree elt)
|
||||
}
|
||||
|
||||
struct rtx_def *
|
||||
java_lang_expand_expr (exp, target, tmode, modifier)
|
||||
java_expand_expr (exp, target, tmode, modifier)
|
||||
register tree exp;
|
||||
rtx target;
|
||||
enum machine_mode tmode;
|
||||
enum expand_modifier modifier;
|
||||
int modifier; /* Actually an enum expand_modifier. */
|
||||
{
|
||||
tree current;
|
||||
|
||||
|
@ -1247,12 +1247,10 @@ extern void append_gpp_mangled_name PARAMS ((const char *, int));
|
||||
extern void add_predefined_file PARAMS ((tree));
|
||||
extern int predefined_filename_p PARAMS ((tree));
|
||||
|
||||
/* We use ARGS_SIZE_RTX to indicate that gcc/expr.h has been included
|
||||
to declare `enum expand_modifier'. */
|
||||
#if defined (TREE_CODE) && defined(RTX_CODE) && defined (HAVE_MACHINE_MODES) && defined (ARGS_SIZE_RTX)
|
||||
struct rtx_def * java_lang_expand_expr PARAMS ((tree, rtx, enum machine_mode,
|
||||
enum expand_modifier));
|
||||
#endif /* TREE_CODE && RTX_CODE && HAVE_MACHINE_MODES && ARGS_SIZE_RTX */
|
||||
#if defined(RTX_CODE) && defined (HAVE_MACHINE_MODES)
|
||||
struct rtx_def * java_expand_expr PARAMS ((tree, rtx, enum machine_mode,
|
||||
int));
|
||||
#endif
|
||||
|
||||
#define DECL_FINAL(DECL) DECL_LANG_FLAG_3 (DECL)
|
||||
|
||||
|
@ -225,6 +225,8 @@ static int dependency_tracking = 0;
|
||||
#define LANG_HOOKS_PARSE_FILE java_parse_file
|
||||
#undef LANG_HOOKS_MARK_TREE
|
||||
#define LANG_HOOKS_MARK_TREE java_mark_tree
|
||||
#undef LANG_HOOKS_EXPAND_EXPR
|
||||
#define LANG_HOOKS_EXPAND_EXPR java_expand_expr
|
||||
#undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL
|
||||
#define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL java_dup_lang_specific_decl
|
||||
#undef LANG_HOOKS_DECL_PRINTABLE_NAME
|
||||
@ -511,7 +513,6 @@ java_init (filename)
|
||||
jcf_path_seal (version_flag);
|
||||
|
||||
print_error_function = lang_print_error;
|
||||
lang_expand_expr = java_lang_expand_expr;
|
||||
|
||||
java_init_decl_processing ();
|
||||
|
||||
|
@ -49,6 +49,7 @@ extern void lhd_clear_binding_stack PARAMS ((void));
|
||||
extern void lhd_print_tree_nothing PARAMS ((FILE *, tree, int));
|
||||
extern const char *lhd_decl_printable_name PARAMS ((tree, int));
|
||||
extern void lhd_set_yydebug PARAMS ((int));
|
||||
extern rtx lhd_expand_expr PARAMS ((tree, rtx, enum machine_mode, int));
|
||||
|
||||
/* Declarations of default tree inlining hooks. */
|
||||
tree lhd_tree_inlining_walk_subtrees PARAMS ((tree *, int *,
|
||||
@ -78,6 +79,7 @@ tree lhd_tree_inlining_convert_parm_for_inlining PARAMS ((tree, tree, tree));
|
||||
#define LANG_HOOKS_POST_OPTIONS lhd_do_nothing
|
||||
#define LANG_HOOKS_GET_ALIAS_SET lhd_get_alias_set
|
||||
#define LANG_HOOKS_EXPAND_CONSTANT lhd_return_tree
|
||||
#define LANG_HOOKS_EXPAND_EXPR lhd_expand_expr
|
||||
#define LANG_HOOKS_SAFE_FROM_P lhd_safe_from_p
|
||||
#define LANG_HOOKS_STATICP lhd_staticp
|
||||
#define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL lhd_do_nothing_t
|
||||
@ -174,6 +176,7 @@ int lhd_tree_dump_type_quals PARAMS ((tree));
|
||||
LANG_HOOKS_CLEAR_BINDING_STACK, \
|
||||
LANG_HOOKS_GET_ALIAS_SET, \
|
||||
LANG_HOOKS_EXPAND_CONSTANT, \
|
||||
LANG_HOOKS_EXPAND_EXPR, \
|
||||
LANG_HOOKS_SAFE_FROM_P, \
|
||||
LANG_HOOKS_STATICP, \
|
||||
LANG_HOOKS_DUP_LANG_SPECIFIC_DECL, \
|
||||
|
@ -143,6 +143,18 @@ hook_get_alias_set_0 (t)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* This is the default expand_expr function. */
|
||||
|
||||
rtx
|
||||
lhd_expand_expr (t, r, mm, em)
|
||||
tree t ATTRIBUTE_UNUSED;
|
||||
rtx r ATTRIBUTE_UNUSED;
|
||||
enum machine_mode mm ATTRIBUTE_UNUSED;
|
||||
int em ATTRIBUTE_UNUSED;
|
||||
{
|
||||
abort ();
|
||||
}
|
||||
|
||||
/* This is the default decl_printable_name function. */
|
||||
|
||||
const char *
|
||||
|
@ -21,6 +21,8 @@ Boston, MA 02111-1307, USA. */
|
||||
#ifndef GCC_LANG_HOOKS_H
|
||||
#define GCC_LANG_HOOKS_H
|
||||
|
||||
/* This file should be #include-d after tree.h. */
|
||||
|
||||
/* A print hook for print_tree (). */
|
||||
typedef void (*lang_print_tree_hook) PARAMS ((FILE *, tree, int indent));
|
||||
|
||||
@ -159,6 +161,10 @@ struct lang_hooks
|
||||
constant equivalent to its input. */
|
||||
tree (*expand_constant) PARAMS ((tree));
|
||||
|
||||
/* Called by expand_expr for language-specific tree codes.
|
||||
Fourth argument is actually an enum expand_modifier. */
|
||||
rtx (*expand_expr) PARAMS ((tree, rtx, enum machine_mode, int));
|
||||
|
||||
/* 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
|
||||
|
@ -48,6 +48,8 @@ static void objc_post_options PARAMS ((void));
|
||||
#define LANG_HOOKS_PARSE_FILE c_common_parse_file
|
||||
#undef LANG_HOOKS_MARK_TREE
|
||||
#define LANG_HOOKS_MARK_TREE c_mark_tree
|
||||
#undef LANG_HOOKS_EXPAND_EXPR
|
||||
#define LANG_HOOKS_EXPAND_EXPR c_expand_expr
|
||||
#undef LANG_HOOKS_STATICP
|
||||
#define LANG_HOOKS_STATICP c_staticp
|
||||
#undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL
|
||||
|
10
gcc/toplev.c
10
gcc/toplev.c
@ -349,14 +349,6 @@ tree current_function_decl;
|
||||
if none. */
|
||||
tree current_function_func_begin_label;
|
||||
|
||||
/* Pointer to function to compute rtl for a language-specific tree code. */
|
||||
|
||||
typedef rtx (*lang_expand_expr_t)
|
||||
PARAMS ((union tree_node *, rtx, enum machine_mode,
|
||||
enum expand_modifier modifier));
|
||||
|
||||
lang_expand_expr_t lang_expand_expr = 0;
|
||||
|
||||
/* Pointer to function to finish handling an incomplete decl at the
|
||||
end of compilation. */
|
||||
|
||||
@ -4945,8 +4937,6 @@ process_options ()
|
||||
static void
|
||||
lang_independent_init ()
|
||||
{
|
||||
lang_expand_expr = (lang_expand_expr_t) do_abort;
|
||||
|
||||
/* Initialize the garbage-collector, and string pools. */
|
||||
init_ggc ();
|
||||
ggc_add_rtx_root (&stack_limit_rtx, 1);
|
||||
|
Loading…
Reference in New Issue
Block a user