lto-common.c (lto_register_canonical_types_for_odr_types): Copy CXX_ODR_P from the main variant.

* lto-common.c (lto_register_canonical_types_for_odr_types):
	Copy CXX_ODR_P from the main variant.

From-SVN: r272923
This commit is contained in:
Jan Hubicka 2019-07-02 10:23:02 +02:00 committed by Jan Hubicka
parent 14ec49a753
commit 606a9a8c72
2 changed files with 16 additions and 2 deletions

View file

@ -1,3 +1,8 @@
2019-06-27 Jan Hubicka <jh@suse.cz>
* lto-common.c (lto_register_canonical_types_for_odr_types):
Copy CXX_ODR_P from the main variant.
2019-06-27 Jan Hubicka <jh@suse.cz>
* lto-common.c: tree-pretty-print.h

View file

@ -568,8 +568,17 @@ lto_register_canonical_types_for_odr_types ()
/* Register all remaining types. */
FOR_EACH_VEC_ELT (*types_to_register, i, t)
if (!TYPE_CANONICAL (t))
gimple_register_canonical_type (t);
{
/* For pre-streamed types like va-arg it is possible that main variant
is !CXX_ODR_P while the variant (which is streamed) is.
Copy CXX_ODR_P to make type verifier happy. This is safe because
in canonical type calculation we only consider main variants.
However we can not change this flag before streaming is finished
to not affect tree merging. */
TYPE_CXX_ODR_P (t) = TYPE_CXX_ODR_P (TYPE_MAIN_VARIANT (t));
if (!TYPE_CANONICAL (t))
gimple_register_canonical_type (t);
}
}