langhooks.c: Don't include gt-langhooks.h.
* langhooks.c: Don't include gt-langhooks.h. (var_labelno): Delete. (lhd_set_decl_assembler_name): Do not append a distinguishing number to file-scope internal-linkage declarations for the first input file, even if they have DECL_CONTEXT set. Use DECL_UID of the declaration itself (if at block scope), or its containing TRANSLATION_UNIT_DECL (if at file scope) for the distinguishing number. * opts.c (cur_in_fname): New global. * opts.h: Declare it. * tree.c: Include opts.h. (make_node_stat): If creating a TRANSLATION_UNIT_DECL, give it DECL_UID equal to cur_in_fname. (copy_node_stat): Do not change DECL_UID when copying a TRANSLATION_UNIT_DECL. (build_common_tree_nodes): Adjust next_decl_uid to reserve the range 0 .. num_in_fnames-1 for TRANSLATION_UNIT_DECLs. * c-decl.c (c_static_assembler_name): Delete. * c-tree.h (c_static_assembler_name): Delete prototype. * c-lang.c, objc/objc-lang.c: Don't override LANG_HOOKS_SET_DECL_ASSEMBLER_NAME. * Makefile.in (tree.o): Update dependencies. (GTFILES): Remove langhooks.c. cp: * decl.c (cxx_init_decl_processing): Call build_common_tree_nodes before creating the global NAMESPACE_DECL. From-SVN: r84123
This commit is contained in:
parent
ab0e8f666d
commit
6de6668085
12 changed files with 96 additions and 58 deletions
|
@ -1,3 +1,32 @@
|
|||
2004-07-05 Zack Weinberg <zack@codesourcery.com>
|
||||
|
||||
* langhooks.c: Don't include gt-langhooks.h.
|
||||
(var_labelno): Delete.
|
||||
(lhd_set_decl_assembler_name): Do not append a distinguishing
|
||||
number to file-scope internal-linkage declarations for the first
|
||||
input file, even if they have DECL_CONTEXT set. Use DECL_UID of
|
||||
the declaration itself (if at block scope), or its containing
|
||||
TRANSLATION_UNIT_DECL (if at file scope) for the distinguishing
|
||||
number.
|
||||
|
||||
* opts.c (cur_in_fname): New global.
|
||||
* opts.h: Declare it.
|
||||
* tree.c: Include opts.h.
|
||||
(make_node_stat): If creating a TRANSLATION_UNIT_DECL, give it
|
||||
DECL_UID equal to cur_in_fname.
|
||||
(copy_node_stat): Do not change DECL_UID when copying a
|
||||
TRANSLATION_UNIT_DECL.
|
||||
(build_common_tree_nodes): Adjust next_decl_uid to reserve the
|
||||
range 0 .. num_in_fnames-1 for TRANSLATION_UNIT_DECLs.
|
||||
|
||||
* c-decl.c (c_static_assembler_name): Delete.
|
||||
* c-tree.h (c_static_assembler_name): Delete prototype.
|
||||
* c-lang.c, objc/objc-lang.c: Don't override
|
||||
LANG_HOOKS_SET_DECL_ASSEMBLER_NAME.
|
||||
|
||||
* Makefile.in (tree.o): Update dependencies.
|
||||
(GTFILES): Remove langhooks.c.
|
||||
|
||||
2004-07-05 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
* fold-const.c (fold) <TRUNC_MOD_EXPR>: Optimize unsigned modulus
|
||||
|
@ -30,13 +59,13 @@
|
|||
(walk_type_fields): New function.
|
||||
(walk_tree): Use it.
|
||||
* tree-nested.c (create_tmp_var_for): Show seen in BIND_EXPR.
|
||||
|
||||
|
||||
* tree-sra.c (struct sra_walk_fns): Init function now returns bool.
|
||||
(sra_walk_modify_expr): Allow init function to fail.
|
||||
(scan_init): Now returns bool.
|
||||
(generate_element_init): If can't understand INIT, return false.
|
||||
(scalarize_init): Return false if generate_element_init does.
|
||||
|
||||
|
||||
* tree-pretty-print.c (dump_generic_node, case ARRAY_TYPE): Properly
|
||||
print bounds.
|
||||
|
||||
|
@ -79,7 +108,7 @@
|
|||
(make_tree_binfo_stat): Declare.
|
||||
(make_tree_binfo): New.
|
||||
(enum tree_node_kind): Add binfo_kind.
|
||||
|
||||
|
||||
* objc/objc-act.c (start_class, objc_declare_protocols,
|
||||
start_protocols): Use TYPE_LANG_SLOT_1.
|
||||
* objc/objc-act.h (CLASS_BINFO_ELTS, PROTOCOL_BINFO_ELTS): Rename
|
||||
|
@ -123,7 +152,7 @@
|
|||
(struct assign_parm_data_one): New.
|
||||
(assign_parms_initialize_all, assign_parms_augmented_arg_list,
|
||||
assign_parm_find_data_types, assign_parms_setup_varargs,
|
||||
assign_parm_find_entry_rtl, assign_parm_is_stack_parm,
|
||||
assign_parm_find_entry_rtl, assign_parm_is_stack_parm,
|
||||
assign_parm_find_stack_rtl, assign_parm_adjust_entry_rtl,
|
||||
assign_parm_adjust_stack_rtl, assign_parm_setup_block_p,
|
||||
assign_parm_setup_block, assign_parm_setup_reg,
|
||||
|
@ -137,7 +166,7 @@
|
|||
(bitmap_insert_into_set): No point in inserting the value if
|
||||
it's invariant.
|
||||
(bitmap_set_contains): New function.
|
||||
(bitmap_set_replace_value): Add comment on why we do it
|
||||
(bitmap_set_replace_value): Add comment on why we do it
|
||||
this way.
|
||||
(set_contains): Removed.
|
||||
(bitmap_set_subtract_from_value_set): New name of
|
||||
|
@ -282,7 +311,7 @@
|
|||
gen_mem_addressof, flush_addressof, put_addressof_into_stack,
|
||||
purge_bitfield_addressof_replacements, purge_addressof_replacements,
|
||||
purge_addressof_1, insns_for_mem_hash, insns_for_mem_comp,
|
||||
struct insns_for_mem_walk_info, insns_for_mem_walk,
|
||||
struct insns_for_mem_walk_info, insns_for_mem_walk,
|
||||
compute_insns_for_mem, is_addressof, purge_addressof, setjmp_protect,
|
||||
setjmp_protect_args): Remove.
|
||||
(push_function_context_to): Don't handle var_refs_queue.
|
||||
|
@ -344,7 +373,7 @@
|
|||
(walk_tree, case POINTER_TYPE): Deal with mutually recursive pointers.
|
||||
|
||||
* tree-sra.c (generate_element_init): Remove any useless conversions.
|
||||
|
||||
|
||||
* gimplify.c (gimplify_conversion): Remove stripping useless
|
||||
conversions from here.
|
||||
(gimplify_expr): Put it here, in place of call to STRIP_MAIN_TYPE_NOPS.
|
||||
|
|
|
@ -1569,7 +1569,7 @@ langhooks.o : langhooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H)
|
|||
$(LANGHOOKS_DEF_H) $(FLAGS_H) $(GGC_H) gt-langhooks.h diagnostic.h
|
||||
tree.o : tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(FLAGS_H) function.h \
|
||||
toplev.h $(GGC_H) $(HASHTAB_H) $(TARGET_H) output.h $(TM_P_H) langhooks.h \
|
||||
real.h gt-tree.h tree-iterator.h $(BASIC_BLOCK_H) $(TREE_FLOW_H)
|
||||
real.h gt-tree.h tree-iterator.h $(BASIC_BLOCK_H) $(TREE_FLOW_H) opts.h
|
||||
tree-dump.o: tree-dump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
|
||||
$(C_TREE_H) $(FLAGS_H) langhooks.h toplev.h output.h c-pragma.h $(RTL_H) \
|
||||
$(GGC_H) $(EXPR_H) $(SPLAY_TREE_H) $(TREE_DUMP_H) tree-iterator.h
|
||||
|
@ -2337,7 +2337,7 @@ GTFILES = $(srcdir)/input.h $(srcdir)/coretypes.h \
|
|||
$(srcdir)/fold-const.c $(srcdir)/function.c \
|
||||
$(srcdir)/gcse.c $(srcdir)/integrate.c $(srcdir)/lists.c $(srcdir)/optabs.c \
|
||||
$(srcdir)/profile.c $(srcdir)/ra-build.c $(srcdir)/regclass.c \
|
||||
$(srcdir)/reg-stack.c $(srcdir)/cfglayout.c $(srcdir)/langhooks.c \
|
||||
$(srcdir)/reg-stack.c $(srcdir)/cfglayout.c \
|
||||
$(srcdir)/sdbout.c $(srcdir)/stmt.c $(srcdir)/stor-layout.c \
|
||||
$(srcdir)/stringpool.c $(srcdir)/tree.c $(srcdir)/varasm.c \
|
||||
$(srcdir)/tree-mudflap.c $(srcdir)/tree-flow.h \
|
||||
|
|
16
gcc/c-decl.c
16
gcc/c-decl.c
|
@ -6576,22 +6576,6 @@ make_pointer_declarator (tree type_quals_attrs, tree target)
|
|||
return build1 (INDIRECT_REF, quals, itarget);
|
||||
}
|
||||
|
||||
/* A wrapper around lhd_set_decl_assembler_name that gives static
|
||||
variables their C names if they are at file scope and only one
|
||||
translation unit is being compiled, for backwards compatibility
|
||||
with certain bizarre assembler hacks (like crtstuff.c). */
|
||||
|
||||
void
|
||||
c_static_assembler_name (tree decl)
|
||||
{
|
||||
if (num_in_fnames == 1
|
||||
&& !TREE_PUBLIC (decl) && DECL_CONTEXT (decl)
|
||||
&& TREE_CODE (DECL_CONTEXT (decl)) == TRANSLATION_UNIT_DECL)
|
||||
SET_DECL_ASSEMBLER_NAME (decl, DECL_NAME (decl));
|
||||
else
|
||||
lhd_set_decl_assembler_name (decl);
|
||||
}
|
||||
|
||||
/* Perform final processing on file-scope data. */
|
||||
static void
|
||||
c_write_global_declarations_1 (tree globals)
|
||||
|
|
|
@ -76,8 +76,6 @@ enum c_language_kind c_language = clk_c;
|
|||
#define LANG_HOOKS_UNSAFE_FOR_REEVAL c_common_unsafe_for_reeval
|
||||
#undef LANG_HOOKS_STATICP
|
||||
#define LANG_HOOKS_STATICP c_staticp
|
||||
#undef LANG_HOOKS_SET_DECL_ASSEMBLER_NAME
|
||||
#define LANG_HOOKS_SET_DECL_ASSEMBLER_NAME c_static_assembler_name
|
||||
#undef LANG_HOOKS_NO_BODY_BLOCKS
|
||||
#define LANG_HOOKS_NO_BODY_BLOCKS true
|
||||
#undef LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL
|
||||
|
|
|
@ -189,7 +189,6 @@ extern tree start_struct (enum tree_code, tree);
|
|||
extern void store_parm_decls (void);
|
||||
extern tree xref_tag (enum tree_code, tree);
|
||||
extern int c_expand_decl (tree);
|
||||
extern void c_static_assembler_name (tree);
|
||||
extern tree make_pointer_declarator (tree, tree);
|
||||
|
||||
/* in c-objc-common.c */
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2004-07-05 Zack Weinberg <zack@codesourcery.com>
|
||||
|
||||
* decl.c (cxx_init_decl_processing): Call
|
||||
build_common_tree_nodes before creating the global NAMESPACE_DECL.
|
||||
|
||||
2004-07-05 Giovanni Bajo <giovannibajo@gcc.gnu.org>
|
||||
|
||||
PR c++/2518
|
||||
|
@ -197,12 +202,12 @@
|
|||
|
||||
2004-06-27 Gabriel Dos Reis <gdr@integrable-solutions.net>
|
||||
|
||||
PR c++/14123
|
||||
PR c++/14123
|
||||
* cxx-pretty-print.c (pp_cxx_ptr_operator): Properly put
|
||||
paranthesis in case of pointers to array members.
|
||||
* error.c (dump_type_prefix): Likewise.
|
||||
(dump_type_suffix): Maybe issue a whitespace when printing
|
||||
ARRAY_TYPE.
|
||||
ARRAY_TYPE.
|
||||
|
||||
2004-06-27 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
|
@ -219,12 +224,12 @@
|
|||
(pp_non_consecutive_character): Likewise.
|
||||
(dump_scope): Use pp_cxx_colon_colon.
|
||||
(dump_template_parameter): Use pp_cxx_identifier,
|
||||
pp_cxx_tree_identifier and pp_cxx_whitespace.
|
||||
pp_cxx_tree_identifier and pp_cxx_whitespace.
|
||||
(dump_templat_bindings): Replace use of pp_string with sequence
|
||||
of pp_cxx_whitespace and pp_equal.
|
||||
(dump_type): Use pp_cxx_identifier, pp_cxx_tree_identifier,
|
||||
pp_cxx_colon_colon, pp_cxx_whitespace throughout. Don't set
|
||||
padding here.
|
||||
padding here.
|
||||
(dump_aggr_type): Use pp_cxx_identifier amd pp_cxx_tree_identifier.
|
||||
(dump_type_prefix): Don't set padding. Use pp_cxx_whitespace,
|
||||
pp_cxx_left_parent, pp_cxx_colon_colon and pp_cxx_star troughout.
|
||||
|
@ -234,17 +239,17 @@
|
|||
(dump_template_decl): Likewise.
|
||||
(dump_function_decl): Likewise. Set padding as appropriate.
|
||||
(dump_parameters): Use pp_cxx_left_paren, pp_cxx_identifier and
|
||||
pp_cxx_right_paren.
|
||||
pp_cxx_right_paren.
|
||||
(dump_exception_spec): Likewise.
|
||||
(dump_function_name): Use pp_cxx_tree_identifier and
|
||||
pp_cxx_identifier.
|
||||
pp_cxx_identifier.
|
||||
(dump_template_parms): Use pp_cxx_begin_template_argument_list and
|
||||
pp_cxx_end_template_argument_list.
|
||||
(dump_expr): Use pp_cxx_left_paren, pp_cxx_right_paren,
|
||||
pp_cxx_colon_colon, pp_cxx_identifier, pp_cxx_tree_identifier and
|
||||
pp_cxx_whitespace throughout.
|
||||
pp_cxx_whitespace throughout.
|
||||
(dump_binary_op): Use pp_cxx_whitespace, pp_cxx_left_paren and
|
||||
pp_cxx_right_paren.
|
||||
pp_cxx_right_paren.
|
||||
(dump_unary_op): Likewise.
|
||||
(reinit_cxx_pp): New function.
|
||||
(type_as_string); Use it.
|
||||
|
@ -399,8 +404,8 @@
|
|||
(cp_parser_set_decl_spec_type): Likewise.
|
||||
* pt.c: Do not include lex.h.
|
||||
* semantics.c: Likewise.
|
||||
(finish_member_class_template): Remove.
|
||||
|
||||
(finish_member_class_template): Remove.
|
||||
|
||||
2004-06-23 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
* call.c (build_cxx_call): Don't call expand_tree_builtin. No
|
||||
|
|
|
@ -2887,6 +2887,8 @@ cxx_init_decl_processing (void)
|
|||
tree void_ftype;
|
||||
tree void_ftype_ptr;
|
||||
|
||||
build_common_tree_nodes (flag_signed_char);
|
||||
|
||||
/* Create all the identifiers we need. */
|
||||
initialize_predefined_identifiers ();
|
||||
|
||||
|
@ -2926,8 +2928,6 @@ cxx_init_decl_processing (void)
|
|||
/* Initially, C. */
|
||||
current_lang_name = lang_name_c;
|
||||
|
||||
build_common_tree_nodes (flag_signed_char);
|
||||
|
||||
error_mark_list = build_tree_list (error_mark_node, error_mark_node);
|
||||
TREE_TYPE (error_mark_list) = error_mark_node;
|
||||
|
||||
|
|
|
@ -157,11 +157,6 @@ lhd_warn_unused_global_decl (tree decl)
|
|||
return true;
|
||||
}
|
||||
|
||||
/* Number for making the label on the next
|
||||
static variable internal to a function. */
|
||||
|
||||
static GTY(()) int var_labelno;
|
||||
|
||||
/* Set the DECL_ASSEMBLER_NAME for DECL. */
|
||||
void
|
||||
lhd_set_decl_assembler_name (tree decl)
|
||||
|
@ -184,18 +179,33 @@ lhd_set_decl_assembler_name (tree decl)
|
|||
|
||||
Can't use just the variable's own name for a variable whose
|
||||
scope is less than the whole compilation. Concatenate a
|
||||
distinguishing number. */
|
||||
if (!TREE_PUBLIC (decl) && DECL_CONTEXT (decl))
|
||||
distinguishing number. If the decl is at block scope, the
|
||||
number assigned is the DECL_UID; if the decl is at file
|
||||
scope, the number is the DECL_UID of the surrounding
|
||||
TRANSLATION_UNIT_DECL, except for the T_U_D with UID 0.
|
||||
Those (the file-scope internal-linkage declarations from the
|
||||
first input file) get no suffix, which is consistent with
|
||||
what has historically been done for file-scope declarations
|
||||
with internal linkage. */
|
||||
if (TREE_PUBLIC (decl)
|
||||
|| DECL_CONTEXT (decl) == NULL_TREE
|
||||
|| (TREE_CODE (DECL_CONTEXT (decl)) == TRANSLATION_UNIT_DECL
|
||||
&& DECL_UID (DECL_CONTEXT (decl)) == 0))
|
||||
SET_DECL_ASSEMBLER_NAME (decl, DECL_NAME (decl));
|
||||
else
|
||||
{
|
||||
const char *name = IDENTIFIER_POINTER (DECL_NAME (decl));
|
||||
char *label;
|
||||
|
||||
ASM_FORMAT_PRIVATE_NAME (label, name, var_labelno);
|
||||
var_labelno++;
|
||||
unsigned int uid;
|
||||
|
||||
if (TREE_CODE (DECL_CONTEXT (decl)) == TRANSLATION_UNIT_DECL)
|
||||
uid = DECL_UID (DECL_CONTEXT (decl));
|
||||
else
|
||||
uid = DECL_UID (decl);
|
||||
|
||||
ASM_FORMAT_PRIVATE_NAME (label, name, uid);
|
||||
SET_DECL_ASSEMBLER_NAME (decl, get_identifier (label));
|
||||
}
|
||||
else
|
||||
SET_DECL_ASSEMBLER_NAME (decl, DECL_NAME (decl));
|
||||
}
|
||||
else
|
||||
/* Nobody should ever be asking for the DECL_ASSEMBLER_NAME of
|
||||
|
@ -581,5 +591,3 @@ lhd_make_node (enum tree_code code)
|
|||
{
|
||||
return make_node (code);
|
||||
}
|
||||
|
||||
#include "gt-langhooks.h"
|
||||
|
|
|
@ -73,8 +73,6 @@ enum c_language_kind c_language = clk_objc;
|
|||
#define LANG_HOOKS_UNSAFE_FOR_REEVAL c_common_unsafe_for_reeval
|
||||
#undef LANG_HOOKS_STATICP
|
||||
#define LANG_HOOKS_STATICP c_staticp
|
||||
#undef LANG_HOOKS_SET_DECL_ASSEMBLER_NAME
|
||||
#define LANG_HOOKS_SET_DECL_ASSEMBLER_NAME c_static_assembler_name
|
||||
#undef LANG_HOOKS_NO_BODY_BLOCKS
|
||||
#define LANG_HOOKS_NO_BODY_BLOCKS true
|
||||
#undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL
|
||||
|
|
|
@ -92,6 +92,7 @@ static bool flag_peel_loops_set, flag_branch_probabilities_set;
|
|||
/* Input file names. */
|
||||
const char **in_fnames;
|
||||
unsigned num_in_fnames;
|
||||
unsigned cur_in_fname;
|
||||
|
||||
static size_t find_opt (const char *, int);
|
||||
static int common_handle_option (size_t scode, const char *arg, int value);
|
||||
|
|
|
@ -57,4 +57,8 @@ extern const char **in_fnames;
|
|||
|
||||
extern unsigned num_in_fnames;
|
||||
|
||||
/* Current input filename index. */
|
||||
|
||||
extern unsigned cur_in_fname;
|
||||
|
||||
#endif
|
||||
|
|
16
gcc/tree.c
16
gcc/tree.c
|
@ -48,6 +48,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
|||
#include "tree-iterator.h"
|
||||
#include "basic-block.h"
|
||||
#include "tree-flow.h"
|
||||
#include "opts.h"
|
||||
|
||||
/* obstack.[ch] explicitly declined to prototype this. */
|
||||
extern int _obstack_allocated_p (struct obstack *h, void *obj);
|
||||
|
@ -309,7 +310,10 @@ make_node_stat (enum tree_code code MEM_STAT_DECL)
|
|||
DECL_USER_ALIGN (t) = 0;
|
||||
DECL_IN_SYSTEM_HEADER (t) = in_system_header;
|
||||
DECL_SOURCE_LOCATION (t) = input_location;
|
||||
DECL_UID (t) = next_decl_uid++;
|
||||
if (code == TRANSLATION_UNIT_DECL)
|
||||
DECL_UID (t) = cur_in_fname;
|
||||
else
|
||||
DECL_UID (t) = next_decl_uid++;
|
||||
|
||||
/* We have not yet computed the alias set for this declaration. */
|
||||
DECL_POINTER_ALIAS_SET (t) = -1;
|
||||
|
@ -382,7 +386,7 @@ copy_node_stat (tree node MEM_STAT_DECL)
|
|||
TREE_VISITED (t) = 0;
|
||||
t->common.ann = 0;
|
||||
|
||||
if (TREE_CODE_CLASS (code) == 'd')
|
||||
if (TREE_CODE_CLASS (code) == 'd' && code != TRANSLATION_UNIT_DECL)
|
||||
DECL_UID (t) = next_decl_uid++;
|
||||
else if (TREE_CODE_CLASS (code) == 't')
|
||||
{
|
||||
|
@ -5310,6 +5314,14 @@ make_or_reuse_type (unsigned size, int unsignedp)
|
|||
void
|
||||
build_common_tree_nodes (int signed_char)
|
||||
{
|
||||
/* This function is called after command line parsing is complete,
|
||||
but before any DECL nodes should have been created. Therefore,
|
||||
now is the appropriate time to adjust next_decl_uid so that the
|
||||
range 0 .. num_in_fnames-1 is reserved for TRANSLATION_UNIT_DECLs. */
|
||||
if (next_decl_uid)
|
||||
abort ();
|
||||
next_decl_uid = num_in_fnames;
|
||||
|
||||
error_mark_node = make_node (ERROR_MARK);
|
||||
TREE_TYPE (error_mark_node) = error_mark_node;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue