aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2014-09-11 08:48:23 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2014-09-11 06:48:23 +0000
commit7c46e07ba46a9a508f45092f681d228330539d80 (patch)
tree9df9bc8d296b5ea59d173ab6f67a701e46098502
parent412c4af7f17e3211b83bc66a4a1599e5f74eb167 (diff)
downloadgcc-7c46e07ba46a9a508f45092f681d228330539d80.zip
gcc-7c46e07ba46a9a508f45092f681d228330539d80.tar.gz
gcc-7c46e07ba46a9a508f45092f681d228330539d80.tar.bz2
varpool.c (varpool_node::ctor_useable_for_folding_p): Do not try to access removed nodes.
* varpool.c (varpool_node::ctor_useable_for_folding_p): Do not try to access removed nodes. From-SVN: r215150
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/varpool.c5
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2427048..40f912a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2014-09-10 Jan Hubicka <hubicka@ucw.cz>
+ * varpool.c (varpool_node::ctor_useable_for_folding_p): Do not try
+ to access removed nodes.
+
+2014-09-10 Jan Hubicka <hubicka@ucw.cz>
+
PR tree-optimization/63186
* ipa-split.c (test_nonssa_use): Skip nonforced labels.
(mark_nonssa_use): Likewise.
diff --git a/gcc/varpool.c b/gcc/varpool.c
index 72971d6..14ef089 100644
--- a/gcc/varpool.c
+++ b/gcc/varpool.c
@@ -316,6 +316,11 @@ varpool_node::ctor_useable_for_folding_p (void)
&& !real_node->lto_file_data)
return false;
+ /* Avoid attempts to load constructors that was not streamed. */
+ if (flag_ltrans && DECL_INITIAL (real_node->decl) == error_mark_node
+ && real_node->body_removed)
+ return false;
+
/* Vtables are defined by their types and must match no matter of interposition
rules. */
if (DECL_VIRTUAL_P (decl))