From f4af4019dfb79f92adcf7cee4ef9e5f6ff428a37 Mon Sep 17 00:00:00 2001
From: Jan Hubicka <jh@suse.cz>
Date: Mon, 24 Jun 2019 23:13:12 +0200
Subject: ipa-utils.h (type_with_linkage_p): Verify that type is CXX_ODR_P.

	* ipa-utils.h (type_with_linkage_p): Verify that type is
	CXX_ODR_P.
	(odr_type_p): Remove extra return.
	* lto-streamer-out.c (hash_tree): Hash TYPE_CXX_ODR_P;
	hash STRING_FLAG only for arrays and integers.
	* tree-stremaer-in.c (unpack_ts_type_common_value_fields):
	Update analogously.
	* tree-streamer-out.c (pack_ts_type_common_value_fields):
	Likewise.
	* print-tree.c (print_node): Print cxx-odr-p
	and string-flag.
	* tree.c (need_assembler_name_p): Also check that type
	is CXX_ODR_TYPE_P
	(verify_type_variant): Update verification of SRING_FLAG;
	also check CXX_ODR_P.
	* tree.h (ARRAY_OR_INTEGER_TYPE_CHECK): New macro.
	(TYPE_STRING_FLAG): Use it.
	(TYPE_CXX_ODR_P): New macro.

	* lto-common.c (compare_tree_sccs_1): Compare CXX_ODR_P;
	compare STRING_FLAG only for arrays and integers.

	* gcc-interface/decl.c (gnat_to_gnu_entity): Check that
	type is array or integer prior checking string flag.
	* gcc-interface/gigi.h (gnat_signed_type_for,
	maybe_character_value): Likewise.

	* c-common.c (braced_lists_to_strings): Check that
	type is array or integer prior checking string flag.

	* lex.c (cxx_make_type): Set TYPE_CXX_ODR_P.

	* dwarf2out.c (gen_array_type_die): First check that type
	is an array and then test string flag.

	* trans-expr.c (gfc_conv_substring): Check that
	type is array or integer prior checking string flag.
	(gfc_conv_string_parameter): Likewise.
	* trans-openmp.c (gfc_omp_scalar_p): Likewise.
	* trans.c (gfc_build_array_ref): Likewise.

From-SVN: r272628
---
 gcc/lto-streamer-out.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

(limited to 'gcc/lto-streamer-out.c')

diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index b1084f4..294771d 100644
--- a/gcc/lto-streamer-out.c
+++ b/gcc/lto-streamer-out.c
@@ -1143,7 +1143,6 @@ hash_tree (struct streamer_tree_cache_d *cache, hash_map<tree, hashval_t> *map,
   if (CODE_CONTAINS_STRUCT (code, TS_TYPE_COMMON))
     {
       hstate.add_hwi (TYPE_MODE (t));
-      hstate.add_flag (TYPE_STRING_FLAG (t));
       /* TYPE_NO_FORCE_BLK is private to stor-layout and need
  	 no streaming.  */
       hstate.add_flag (TYPE_PACKED (t));
@@ -1154,9 +1153,12 @@ hash_tree (struct streamer_tree_cache_d *cache, hash_map<tree, hashval_t> *map,
 	{
 	  hstate.add_flag (TYPE_TRANSPARENT_AGGR (t));
 	  hstate.add_flag (TYPE_FINAL_P (t));
+          hstate.add_flag (TYPE_CXX_ODR_P (t));
 	}
       else if (code == ARRAY_TYPE)
 	hstate.add_flag (TYPE_NONALIASED_COMPONENT (t));
+      if (code == ARRAY_TYPE || code == INTEGER_TYPE)
+        hstate.add_flag (TYPE_STRING_FLAG (t));
       if (AGGREGATE_TYPE_P (t))
 	hstate.add_flag (TYPE_TYPELESS_STORAGE (t));
       hstate.commit_flag ();
-- 
cgit v1.1