From ee1cd2815dc7699c8d51f473ffdd207444bef5b9 Mon Sep 17 00:00:00 2001 From: jason Date: Tue, 14 Dec 1999 23:05:11 +0000 Subject: [PATCH] * dwarf2out.c (class_scope_p): New fn. (gen_subprogram_die): Use it. (gen_variable_die): Use it. Tweak logic. (gen_struct_or_union_type_die): Check context_die to determine if we're function-local. (dwarf2out_decl): Check DECL_BUILT_IN, not DECL_FUNCTION_CODE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30931 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/dwarf2out.c | 34 +++++++++++++++++++--------------- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 01016d1..711cafd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +1999-12-14 Jason Merrill + + * dwarf2out.c (class_scope_p): New fn. + (gen_subprogram_die): Use it. + (gen_variable_die): Use it. Tweak logic. + (gen_struct_or_union_type_die): Check context_die to determine + if we're function-local. + (dwarf2out_decl): Check DECL_BUILT_IN, not DECL_FUNCTION_CODE. + 1999-12-14 Bernd Schmidt * loop.c (check_dbra_loop): Can't reverse a biv that has diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 4f8227c..e38152b 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -7677,6 +7677,17 @@ local_scope_p (context_die) return 0; } +/* Returns nonzero iff CONTEXT_DIE is a class. */ + +static inline int +class_scope_p (context_die) + dw_die_ref context_die; +{ + return (context_die + && (context_die->die_tag == DW_TAG_structure_type + || context_die->die_tag == DW_TAG_union_type)); +} + /* Many forms of DIEs require a "type description" attribute. This routine locates the proper "type descriptor" die for the type given by 'type', and adds an DW_AT_type attribute below the given die. */ @@ -8221,11 +8232,8 @@ gen_subprogram_die (decl, context_die) register tree fn_arg_types; register tree outer_scope; register dw_die_ref old_die = lookup_decl_die (decl); - register int declaration - = (current_function_decl != decl - || (context_die - && (context_die->die_tag == DW_TAG_structure_type - || context_die->die_tag == DW_TAG_union_type))); + register int declaration = (current_function_decl != decl + || class_scope_p (context_die)); /* Note that it is possible to have both DECL_ABSTRACT and `declaration' be true, if we started to generate the abstract instance of an inline, @@ -8495,11 +8503,8 @@ gen_variable_die (decl, context_die) register dw_die_ref var_die = new_die (DW_TAG_variable, context_die); dw_die_ref old_die = lookup_decl_die (decl); - int declaration - = (DECL_EXTERNAL (decl) - || current_function_decl != decl_function_context (decl) - || context_die->die_tag == DW_TAG_structure_type - || context_die->die_tag == DW_TAG_union_type); + int declaration = (DECL_EXTERNAL (decl) + || class_scope_p (context_die)); if (origin != NULL) add_abstract_origin_attribute (var_die, origin); @@ -8551,12 +8556,11 @@ gen_variable_die (decl, context_die) if (declaration) add_AT_flag (var_die, DW_AT_declaration, 1); - if ((declaration && decl_class_context (decl)) || DECL_ABSTRACT (decl)) + if (class_scope_p (context_die) || DECL_ABSTRACT (decl)) equate_decl_number_to_die (decl, var_die); if (! declaration && ! DECL_ABSTRACT (decl)) { - equate_decl_number_to_die (decl, var_die); add_location_or_const_value_attribute (var_die, decl); add_pubname (decl, var_die); } @@ -8970,8 +8974,8 @@ gen_struct_or_union_type_die (type, context_die) { add_AT_flag (type_die, DW_AT_declaration, 1); - /* We can't do this for function-local types, and we don't need to. */ - if (! decl_function_context (TYPE_STUB_DECL (type))) + /* We don't need to do this for function-local types. */ + if (context_die) add_incomplete_type (type); } } @@ -9576,7 +9580,7 @@ dwarf2out_decl (decl) /* Ignore this FUNCTION_DECL if it refers to a builtin declaration of a builtin function. Explicit programmer-supplied declarations of these same functions should NOT be ignored however. */ - if (DECL_EXTERNAL (decl) && DECL_FUNCTION_CODE (decl)) + if (DECL_EXTERNAL (decl) && DECL_BUILT_IN (decl)) return; /* What we would really like to do here is to filter out all mere -- 2.7.4