From: rth Date: Mon, 21 Nov 2005 21:27:29 +0000 (+0000) Subject: gcc/ X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=d1c4171700df4027980bd4d81b4bb5a6df59b3ef gcc/ * c-common.c, config/darwin-c.c, c-decl.c, c-tree.h, c-objc-common.h, langhooks-def.h, langhooks.h: Revert 2005-11-18 lookup_name patch. * c-tree.h (lookup_name): Move declaration ... * c-common.h (lookup_name): ... here. * config/darwin-c.c: Include c-common.h. * config/t-darwin: Update dependencies. gcc/cp/ * cp-objcp-common.h, name-lookup.c, name-lookup.h: Revert 11-18 patch. * name-lookup.c (lookup_name): Remove prefer_type argument. (lookup_name_prefer_type): New. * decl.c (lookup_and_check_tag): Use them. * pt.c (tsubst_friend_class): Likewise. (lookup_template_class): Likewise. (tsubst_copy_and_build): Likewise. * name-lookup.h (lookup_name_prefer_type): New. (lookup_name): Remove declaration. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@107325 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 528e7a86638..7bb01755113 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2005-11-21 Richard Henderson + + * c-common.c, config/darwin-c.c, c-decl.c, c-tree.h, c-objc-common.h, + langhooks-def.h, langhooks.h: Revert 2005-11-18 lookup_name patch. + + * c-tree.h (lookup_name): Move declaration ... + * c-common.h (lookup_name): ... here. + * config/darwin-c.c: Include c-common.h. + * config/t-darwin: Update dependencies. + 2005-11-22 Ben Elliston * optabs.c (expand_abs_nojump): Use SCALAR_FLOAT_MODE_P instead of diff --git a/gcc/c-common.c b/gcc/c-common.c index bdaa9ccd460..7b27ba06e4e 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -5464,7 +5464,7 @@ handle_cleanup_attribute (tree *node, tree name, tree args, *no_add_attrs = true; return NULL_TREE; } - cleanup_decl = lang_hooks.decls.lookup_name (cleanup_id); + cleanup_decl = lookup_name (cleanup_id); if (!cleanup_decl || TREE_CODE (cleanup_decl) != FUNCTION_DECL) { error ("cleanup argument not a function"); diff --git a/gcc/c-common.h b/gcc/c-common.h index 4e8485a061a..cf75ed9e82a 100644 --- a/gcc/c-common.h +++ b/gcc/c-common.h @@ -776,6 +776,7 @@ extern tree finish_label_address_expr (tree); /* Same function prototype, but the C and C++ front ends have different implementations. Used in c-common.c. */ extern tree lookup_label (tree); +extern tree lookup_name (tree); extern int vector_types_convertible_p (tree t1, tree t2); diff --git a/gcc/c-objc-common.h b/gcc/c-objc-common.h index 706f12075af..69212599612 100644 --- a/gcc/c-objc-common.h +++ b/gcc/c-objc-common.h @@ -127,8 +127,6 @@ extern void c_initialize_diagnostics (diagnostic_context *); #undef LANG_HOOKS_GETDECLS #define LANG_HOOKS_GETDECLS lhd_return_null_tree_v -#undef LANG_HOOKS_LOOKUP_NAME -#define LANG_HOOKS_LOOKUP_NAME lookup_name #undef LANG_HOOKS_WRITE_GLOBALS #define LANG_HOOKS_WRITE_GLOBALS c_write_global_declarations diff --git a/gcc/c-tree.h b/gcc/c-tree.h index 0894317e574..6468ef27cc6 100644 --- a/gcc/c-tree.h +++ b/gcc/c-tree.h @@ -454,7 +454,6 @@ extern tree groktypename (struct c_type_name *); extern tree grokparm (const struct c_parm *); extern tree implicitly_declare (tree); extern void keep_next_level (void); -extern tree lookup_name (tree); extern void pending_xref_error (void); extern void c_push_function_context (struct function *); extern void c_pop_function_context (struct function *); diff --git a/gcc/config/darwin-c.c b/gcc/config/darwin-c.c index 13be8fab95d..d044deb709c 100644 --- a/gcc/config/darwin-c.c +++ b/gcc/config/darwin-c.c @@ -28,12 +28,12 @@ Boston, MA 02110-1301, USA. */ #include "c-pragma.h" #include "c-tree.h" #include "c-incpath.h" +#include "c-common.h" #include "toplev.h" #include "flags.h" #include "tm_p.h" #include "cppdefault.h" #include "prefix.h" -#include "langhooks.h" /* Pragmas. */ @@ -142,7 +142,7 @@ darwin_pragma_unused (cpp_reader *pfile ATTRIBUTE_UNUSED) tok = c_lex (&decl); if (tok == CPP_NAME && decl) { - tree local = lang_hooks.decls.lookup_name (decl); + tree local = lookup_name (decl); if (local && (TREE_CODE (local) == PARM_DECL || TREE_CODE (local) == VAR_DECL)) TREE_USED (local) = 1; diff --git a/gcc/config/t-darwin b/gcc/config/t-darwin index df1b6320e5d..d59f0b7a162 100644 --- a/gcc/config/t-darwin +++ b/gcc/config/t-darwin @@ -6,7 +6,7 @@ darwin.o: $(srcdir)/config/darwin.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ darwin-c.o: $(srcdir)/config/darwin-c.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(CPPLIB_H) tree.h c-pragma.h $(C_TREE_H) toplev.h $(TM_P_H) \ - c-incpath.h flags.h + c-incpath.h flags.h $(C_COMMON_H) $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/config/darwin-c.c $(PREPROCESSOR_DEFINES) gt-darwin.h : s-gtype ; @true diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index bd711f3aac1..87e4598263b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,16 @@ +2005-11-21 Richard Henderson + + * cp-objcp-common.h, name-lookup.c, name-lookup.h: Revert 11-18 patch. + + * name-lookup.c (lookup_name): Remove prefer_type argument. + (lookup_name_prefer_type): New. + * decl.c (lookup_and_check_tag): Use them. + * pt.c (tsubst_friend_class): Likewise. + (lookup_template_class): Likewise. + (tsubst_copy_and_build): Likewise. + * name-lookup.h (lookup_name_prefer_type): New. + (lookup_name): Remove declaration. + 2005-11-18 Mark Mitchell PR c++/8355 diff --git a/gcc/cp/cp-objcp-common.h b/gcc/cp/cp-objcp-common.h index bd7f4f7958c..4a4d400cd6f 100644 --- a/gcc/cp/cp-objcp-common.h +++ b/gcc/cp/cp-objcp-common.h @@ -151,7 +151,5 @@ extern tree objcp_tsubst_copy_and_build (tree, tree, tsubst_flags_t, #define LANG_HOOKS_TO_TARGET_CHARSET c_common_to_target_charset #undef LANG_HOOKS_GIMPLIFY_EXPR #define LANG_HOOKS_GIMPLIFY_EXPR cp_gimplify_expr -#undef LANG_HOOKS_LOOKUP_NAME -#define LANG_HOOKS_LOOKUP_NAME lookup_name_one #endif /* GCC_CP_OBJCP_COMMON */ diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 55e26b97ff6..d87983c1cb9 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -9293,7 +9293,7 @@ lookup_and_check_tag (enum tag_types tag_code, tree name, { /* First try ordinary name lookup, ignoring hidden class name injected via friend declaration. */ - decl = lookup_name (name, 2); + decl = lookup_name_prefer_type (name, 2); /* If that fails, the name will be placed in the smallest non-class, non-function-prototype scope according to 3.3.1/5. We may already have a hidden name declared as friend in this diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 382a8a3a3ea..49830c61979 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -3998,18 +3998,16 @@ lookup_function_nonclass (tree name, tree args, bool block_p) } tree -lookup_name (tree name, int prefer_type) +lookup_name (tree name) { - return lookup_name_real (name, prefer_type, 0, /*block_p=*/true, - 0, LOOKUP_COMPLAIN); + return lookup_name_real (name, 0, 0, /*block_p=*/true, 0, LOOKUP_COMPLAIN); } -/* Similar to `lookup_name' for the benefit of common code. */ - tree -lookup_name_one (tree name) +lookup_name_prefer_type (tree name, int prefer_type) { - return lookup_name (name, 0); + return lookup_name_real (name, prefer_type, 0, /*block_p=*/true, + 0, LOOKUP_COMPLAIN); } /* Look up NAME for type used in elaborated name specifier in diff --git a/gcc/cp/name-lookup.h b/gcc/cp/name-lookup.h index 11c1feca562..5a1dc8e34f5 100644 --- a/gcc/cp/name-lookup.h +++ b/gcc/cp/name-lookup.h @@ -312,8 +312,7 @@ extern void pop_nested_namespace (tree); extern void pushlevel_class (void); extern void poplevel_class (void); extern tree pushdecl_with_scope (tree, cxx_scope *, bool); -extern tree lookup_name (tree, int); -extern tree lookup_name_one (tree); +extern tree lookup_name_prefer_type (tree, int); extern tree lookup_name_real (tree, int, int, bool, int, int); extern tree lookup_type_scope (tree, tag_scope); extern tree namespace_binding (tree, tree); diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 3e495643fd6..4f13a7d073e 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -4352,7 +4352,7 @@ lookup_template_class (tree d1, { if (context) push_decl_namespace (context); - template = lookup_name (d1, /*prefer_type=*/0); + template = lookup_name (d1); template = maybe_get_template_decl_from_type_decl (template); if (context) pop_decl_namespace (); @@ -5384,7 +5384,7 @@ tsubst_friend_class (tree friend_tmpl, tree args) } /* First, we look for a class template. */ - tmpl = lookup_name (DECL_NAME (friend_tmpl), /*prefer_type=*/0); + tmpl = lookup_name (DECL_NAME (friend_tmpl)); /* But, if we don't find one, it might be because we're in a situation like this: @@ -5399,7 +5399,7 @@ tsubst_friend_class (tree friend_tmpl, tree args) for `S', not the TEMPLATE_DECL. */ if (!tmpl || !DECL_CLASS_TEMPLATE_P (tmpl)) { - tmpl = lookup_name (DECL_NAME (friend_tmpl), /*prefer_type=*/1); + tmpl = lookup_name_prefer_type (DECL_NAME (friend_tmpl), 1); tmpl = maybe_get_template_decl_from_type_decl (tmpl); } @@ -8516,7 +8516,7 @@ tsubst_copy_and_build (tree t, } /* Look up the name. */ - decl = lookup_name (t, 0); + decl = lookup_name (t); /* By convention, expressions use ERROR_MARK_NODE to indicate failure, not NULL_TREE. */ diff --git a/gcc/langhooks-def.h b/gcc/langhooks-def.h index ff5e73efb41..a17927a2eb2 100644 --- a/gcc/langhooks-def.h +++ b/gcc/langhooks-def.h @@ -234,7 +234,6 @@ extern tree lhd_make_node (enum tree_code); #define LANG_HOOKS_INSERT_BLOCK insert_block #define LANG_HOOKS_PUSHDECL pushdecl #define LANG_HOOKS_GETDECLS getdecls -#define LANG_HOOKS_LOOKUP_NAME lhd_return_null_tree #define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL lhd_warn_unused_global_decl #define LANG_HOOKS_WRITE_GLOBALS write_global_declarations #define LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE NULL @@ -246,7 +245,6 @@ extern tree lhd_make_node (enum tree_code); LANG_HOOKS_INSERT_BLOCK, \ LANG_HOOKS_PUSHDECL, \ LANG_HOOKS_GETDECLS, \ - LANG_HOOKS_LOOKUP_NAME, \ LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL, \ LANG_HOOKS_WRITE_GLOBALS, \ LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE, \ diff --git a/gcc/langhooks.h b/gcc/langhooks.h index 22346fe5905..cdb547c7cf3 100644 --- a/gcc/langhooks.h +++ b/gcc/langhooks.h @@ -170,12 +170,6 @@ struct lang_hooks_for_decls /* Returns the chain of decls so far in the current scope level. */ tree (*getdecls) (void); -/* Look up NAME in the current scope and its superiors - in the namespace of variables, functions and typedefs. - Return a ..._DECL node of some kind representing its definition, - or return 0 if it is undefined. */ - tree (*lookup_name) (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) (tree);