This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH][LTO] Remove type completion during merging
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Richard Guenther <rguenther at suse dot de>
- Cc: gcc-patches at gcc dot gnu dot org, Diego Novillo <dnovillo at google dot com>
- Date: Tue, 20 Jul 2010 21:41:06 -0700
- Subject: Re: [PATCH][LTO] Remove type completion during merging
- References: <alpine.LNX.email@example.com>
On Thu, Jul 15, 2010 at 6:51 AM, Richard Guenther <firstname.lastname@example.org> wrote:
> This removes type completion during type merging which made
> the type merging outcome depend on the order of registering
> types and caused problems when there are type ODR violations
> across modules. ?The cost of not completing types is less
> type merging done (thus possibly more memory use), and a
> split brain of gimple_types_compatible_p which needs to
> ignore complete/incomplete differences for diagnostics.
> To not barf up in the type verifier later we also need to
> use the comparison predicates in useless_type_conversion_p
> (huh, that change truly feels backward and obviously also
> affects non-LTO operation).
> When building SPEC 2k6 this patch removes one ICE.
> I'm currently re-bootstrapping for all languages due to
> the tree-ssa.c change but it already survived bootstrap
> and test on x86_64-unknown-linux-gnu w/o that change.
> 2010-07-15 ?Richard Guenther ?<email@example.com>
> ? ? ? ?* lto-symtab.c (lto_symtab_merge): Use gimple_types_compatible_p.
> ? ? ? ?(lto_symtab_merge_decls_2): Likewise.
> ? ? ? ?* gimple.h (gimple_types_compatible_p): Declare.
> ? ? ? ?* gimple.c (gimple_queue_type_fixup): Remove.
> ? ? ? ?(gimple_fixup_complete_and_incomplete_subtype_p): Likewise.
> ? ? ? ?(gimple_compatible_complete_and_incomplete_type_p): New
> ? ? ? ?function.
> ? ? ? ?(gimple_types_compatible_p): Adjust.
> ? ? ? ?(gimple_register_type): Remove type fixup code.
> ? ? ? ?(print_gimple_types_stats): Adjust.
> ? ? ? ?(free_gimple_type_tables): Likewise.
> ? ? ? ?* lto-streamer-in.c (input_gimple_stmt): Use gimple_types_compatible_p.
> ? ? ? ?* tree-ssa.c (useless_type_conversion_p): Likewise.
I think this caused: