re PR lto/68811 (ICE: in get, at cgraph.h:1218)
authorJan Hubicka <hubicka@ucw.cz>
Wed, 9 Dec 2015 22:37:02 +0000 (23:37 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Wed, 9 Dec 2015 22:37:02 +0000 (22:37 +0000)
PR lto/68811
* lto.c (lto_fixup_prevailing_decls): Do not check TREE_CHAIN of
DECL.
(LTO_NO_PREVAIL): Use gcc_checking_assert.

From-SVN: r231477

gcc/lto/ChangeLog
gcc/lto/lto.c

index 9f0733d82493d15643f16a7d9396dc8bcf301da5..4fe2ebe1888006a985f1dec0126961af462355c1 100644 (file)
@@ -1,3 +1,10 @@
+2015-12-08  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR lto/68811
+       * lto.c (lto_fixup_prevailing_decls): Do not check TREE_CHAIN of
+       DECL.
+       (LTO_NO_PREVAIL): Use gcc_checking_assert.
+
 2015-12-08  Jan Hubicka  <hubicka@ucw.cz>
 
        PR lto/68811
index 90712b45ecb9da5bbbf9dd0a3d32208f8f42f350..1b11439f04fc74583c91477f817757eae2e06c6e 100644 (file)
@@ -2517,7 +2517,7 @@ lto_wpa_write_files (void)
 
 /* Ensure that TT isn't a replacable var of function decl.  */
 #define LTO_NO_PREVAIL(tt) \
-  gcc_assert (!(tt) || !VAR_OR_FUNCTION_DECL_P (tt))
+  gcc_checking_assert (!(tt) || !VAR_OR_FUNCTION_DECL_P (tt))
 
 /* Given a tree T replace all fields referring to variables or functions
    with their prevailing variant.  */
@@ -2529,7 +2529,10 @@ lto_fixup_prevailing_decls (tree t)
 
   gcc_checking_assert (code != TREE_BINFO);
   LTO_NO_PREVAIL (TREE_TYPE (t));
-  if (CODE_CONTAINS_STRUCT (code, TS_COMMON))
+  if (CODE_CONTAINS_STRUCT (code, TS_COMMON)
+      /* lto_symtab_prevail_decl use TREE_CHAIN to link to the prevailing decl.
+        in the case T is a prevailed declaration we would ICE here. */
+      && !VAR_OR_FUNCTION_DECL_P (t))
     LTO_NO_PREVAIL (TREE_CHAIN (t));
   if (DECL_P (t))
     {