> * alias.c (record_component_aliases): Honor odr_based_tbaa_p. > * ipa-devirt.c (odr_type_d): Add tbaa_enabled field. > (get_odr_type): Return NULL when odr_type_hash is NULL. > (enable_odr_based_tbaa): New function. > (odr_based_tbaa_p): New function. > (set_type_canonical_for_odr_type): New function. > * ipa-utils.h (enable_odr_based_tbaa, odr_based_tbaa_p, > set_type_canonical_for_odr_type): Declare. > * lto-common.c: Update copyright; include tree-pretty-print.h. > (types_to_register): New static var. > (iterative_hash_canonical_type): Add new parameter INSERT. > (hash_canonical_type): Likewise. > (lookup_canonical_type): New function. > (lto_register_canonical_types_for_odr_types): New. > (odr_or_derived_type_p): New function. > (lto_read_decls): Deffer ODR and ODR derived types > to later canonical type calculation. > * tree.c (gimple_canonical_types_compatible_p): Honnor > odr_based_tbaa_p.
Ping. This patch improves TBAA for C++ code bases relatively noticeably... Honza