diff options
author | Richard Guenther <rguenther@suse.de> | 2009-12-15 16:30:22 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-12-15 16:30:22 +0000 |
commit | 2a71eb48e4348f8bc33f9b02e45fd69adbe66b9c (patch) | |
tree | b88b0549fc1a571763835c3ca441355bf819abe1 /gcc/tree.c | |
parent | 9f81eaccf9ab5a38f9a988ccc63a3299e18ef5b5 (diff) | |
download | gcc-2a71eb48e4348f8bc33f9b02e45fd69adbe66b9c.zip gcc-2a71eb48e4348f8bc33f9b02e45fd69adbe66b9c.tar.gz gcc-2a71eb48e4348f8bc33f9b02e45fd69adbe66b9c.tar.bz2 |
tree.c (free_lang_data_in_binfo): Do not free BINFO_OFFSET and BINFO_VPTR_FIELD.
2009-12-15 Richard Guenther <rguenther@suse.de>
* tree.c (free_lang_data_in_binfo): Do not free BINFO_OFFSET
and BINFO_VPTR_FIELD.
(free_lang_data_in_type): Do not free TYPE_STUB_DECL if we
generate debug information.
(free_lang_data_in_decl): Do not free DECL_SIZE_UNIT,
DECL_SIZE, DECL_FIELD_OFFSET and DECL_FCONTEXT.
(free_lang_data): Do not disable debuginfo.
* lto-streamer-out.c (write_symbol_vec): Deal with
non-constant DECL_SIZE.
(pack_ts_base_value_fields): Write types with false
TREE_ASM_WRITTEN.
(lto_output_ts_type_tree_pointers): Stream TYPE_STUB_DECL.
* lto-streamer-in.c (lto_input_ts_type_tree_pointers): Stream
TYPE_STUB_DECL.
* dwarf2out.c (add_pure_or_virtual_attribute): Check for
DECL_CONTEXT.
(gen_type_die_for_member): Test for TYPE_STUB_DECL.
* opts.c (decode_options): Do not disable var-tracking for lto.
* doc/invoke.texi (-flto): Document -flto vs. -g experimental
status.
(-fwhopr): Document experimental status.
lto/
* lto.c (lto_fixup_field_decl): Fixup DECL_FIELD_OFFSET.
(lto_post_options): Do not disable debuginfo.
From-SVN: r155259
Diffstat (limited to 'gcc/tree.c')
-rw-r--r-- | gcc/tree.c | 42 |
1 files changed, 10 insertions, 32 deletions
@@ -4152,13 +4152,10 @@ free_lang_data_in_binfo (tree binfo) gcc_assert (TREE_CODE (binfo) == TREE_BINFO); - BINFO_OFFSET (binfo) = NULL_TREE; BINFO_VTABLE (binfo) = NULL_TREE; - BINFO_VPTR_FIELD (binfo) = NULL_TREE; BINFO_BASE_ACCESSES (binfo) = NULL; BINFO_INHERITANCE_CHAIN (binfo) = NULL_TREE; BINFO_SUBVTT_INDEX (binfo) = NULL_TREE; - BINFO_VPTR_FIELD (binfo) = NULL_TREE; for (i = 0; VEC_iterate (tree, BINFO_BASE_BINFOS (binfo), i, t); i++) free_lang_data_in_binfo (t); @@ -4253,7 +4250,8 @@ free_lang_data_in_type (tree type) } TYPE_CONTEXT (type) = NULL_TREE; - TYPE_STUB_DECL (type) = NULL_TREE; + if (debug_info_level < DINFO_LEVEL_TERSE) + TYPE_STUB_DECL (type) = NULL_TREE; } @@ -4380,29 +4378,16 @@ free_lang_data_in_decl (tree decl) } } - if (TREE_CODE (decl) == PARM_DECL - || TREE_CODE (decl) == FIELD_DECL - || TREE_CODE (decl) == RESULT_DECL) - { - tree unit_size = DECL_SIZE_UNIT (decl); - tree size = DECL_SIZE (decl); - if ((unit_size && TREE_CODE (unit_size) != INTEGER_CST) - || (size && TREE_CODE (size) != INTEGER_CST)) - { - DECL_SIZE_UNIT (decl) = NULL_TREE; - DECL_SIZE (decl) = NULL_TREE; - } + /* ??? We could free non-constant DECL_SIZE, DECL_SIZE_UNIT + and DECL_FIELD_OFFSET. But it's cheap enough to not do + that and refrain from adding workarounds to dwarf2out.c */ - if (TREE_CODE (decl) == FIELD_DECL - && DECL_FIELD_OFFSET (decl) - && TREE_CODE (DECL_FIELD_OFFSET (decl)) != INTEGER_CST) - DECL_FIELD_OFFSET (decl) = NULL_TREE; + /* DECL_FCONTEXT is only used for debug info generation. */ + if (TREE_CODE (decl) == FIELD_DECL + && debug_info_level < DINFO_LEVEL_TERSE) + DECL_FCONTEXT (decl) = NULL_TREE; - /* DECL_FCONTEXT is only used for debug info generation. */ - if (TREE_CODE (decl) == FIELD_DECL) - DECL_FCONTEXT (decl) = NULL_TREE; - } - else if (TREE_CODE (decl) == FUNCTION_DECL) + if (TREE_CODE (decl) == FUNCTION_DECL) { if (gimple_has_body_p (decl)) { @@ -4977,13 +4962,6 @@ free_lang_data (void) diagnostic_finalizer (global_dc) = default_diagnostic_finalizer; diagnostic_format_decoder (global_dc) = default_tree_printer; - /* FIXME. We remove sufficient language data that the debug - info writer gets completely confused. Disable debug information - for now. */ - debug_info_level = DINFO_LEVEL_NONE; - write_symbols = NO_DEBUG; - debug_hooks = &do_nothing_debug_hooks; - return 0; } |