This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH][LTO] Fix bug in lto_fixup_decls


This patch fixes a problem where lto_fixup_decls does not replace all
reachable copies of an unprevailing DECL before deleting the DECL.
This is bootstrapped and tested on target i686-unknown-linux-gnu.

2008-10-08  Doug Kwan  <dougkwan@google.com>

testsuite/ChaneLog
        * g++.dg/lto/20081008.C: New test.

lto/ChangeLog
        * lto.c (lto_fixup_tree): Remove ATTRIBUTE_UNUSED from DATA.
        Handle new tree codes RECORD_TYPE, UNION_TYPE, QUAL_UNION_TYPE
        and TREE_BINFO.  Also move code handling FUNCTION_DECL and VAR_DECL
        from lto_fixup_state to here.
        (lto_fixup_state): Take an lto_fixup_data_t object DATA instead of
        just a free-list.  Fix up types also.  Move decl merging code to
        lto_fixup_tree.
        (lto_fixup_state_aux): Change AUX to point to an
lto_fixup_data_t         object.
        (lto_fixup_decls): Use another pointer set to avoid multiple
        walking of nodes except for DECLs to be replaced.  Pass an
        lto_fixup_data_t object to tree-walker.

Attachment: patch.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]