lto-streamer-out.c (tree_is_indexable): Make LABEL_DECL nonindexable unless it is...
authorJan Hubicka <hubicka@ucw.cz>
Sun, 24 Jun 2018 14:11:55 +0000 (16:11 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Sun, 24 Jun 2018 14:11:55 +0000 (14:11 +0000)
* lto-streamer-out.c (tree_is_indexable): Make LABEL_DECL nonindexable
unless it is forced or nonlocal; assert that we stream no IMPORTED_DECL.

From-SVN: r261995

gcc/ChangeLog
gcc/lto-streamer-out.c

index 006dae5e784924ac16b8eb7bc548b23ac50d0057..61df1473fcc887d5f1ac905b3b4f8db638fc215d 100644 (file)
@@ -1,3 +1,8 @@
+2018-06-22  Jan Hubicka  <hubicka@ucw.cz>
+
+       * lto-streamer-out.c (tree_is_indexable): Make LABEL_DECL nonindexable
+       unless it is forced or nonlocal; assert that we stream no IMPORTED_DECL.
+
 2018-06-22  Maya Rashish  <coypu@sdf.org>
 
        * doc/invoke.texi (mno-fancy-math-387): Update for changes
index 313b76e5018bcd9ff033c1e586689dfe27a971cf..e7769f8adc9bc966508f7b3ec958fae2d0a03c44 100644 (file)
@@ -134,9 +134,12 @@ tree_is_indexable (tree t)
   if ((TREE_CODE (t) == PARM_DECL || TREE_CODE (t) == RESULT_DECL)
       && DECL_CONTEXT (t))
     return variably_modified_type_p (TREE_TYPE (DECL_CONTEXT (t)), NULL_TREE);
-  /* IMPORTED_DECL is put into BLOCK and thus it never can be shared.  */
+  /* IMPORTED_DECL is put into BLOCK and thus it never can be shared.
+     We should no longer need to stream it.  */
   else if (TREE_CODE (t) == IMPORTED_DECL)
-    return false;
+    gcc_unreachable ();
+  else if (TREE_CODE (t) == LABEL_DECL)
+    return FORCED_LABEL (t) || DECL_NONLOCAL (t);
   else if (((VAR_P (t) && !TREE_STATIC (t))
            || TREE_CODE (t) == TYPE_DECL
            || TREE_CODE (t) == CONST_DECL