Commit 3b456f8d by Jan Hubicka Committed by Jan Hubicka

re PR lto/88130 (ICE in copy_function_or_variable, at lto-streamer-out.c:2315 since r260963)


	PR lto/88130
	* varpool.c (varpool_node::ctor_useable_for_folding_p): Also return
	false at WPA time when body was removed.
	* g++.dg/torture/pr88130.C: New testcase.

From-SVN: r267515
parent 0588e288
2019-01-02 Jan Hubicka <hubicka@ucw.cz>
PR lto/88130
* varpool.c (varpool_node::ctor_useable_for_folding_p): Also return
false at WPA time when body was removed.
2019-01-02 Martin Liska <mliska@suse.cz>
PR tree-optimization/88650
......
2019-01-02 Jan Hubicka <hubicka@ucw.cz>
PR lto/88130
* g++.dg/torture/pr88130.C: New testcase.
2019-01-02 Martin Liska <mliska@suse.cz>
PR tree-optimization/88650
......
/* { dg-do compile } */
/* { dg-options "-flto" } */
/* { dg-require-effective-target lto } */
class a {
public:
static const long b = 1;
};
struct c {
enum d { e };
};
class C;
class f {
public:
f(c::d);
template <typename g> C operator<=(g);
};
class C {
public:
template <typename h> void operator!=(h &);
};
void i() {
f j(c::e);
try {
j <= 0 != a::b;
} catch (...) {
}
}
......@@ -335,16 +335,16 @@ varpool_node::ctor_useable_for_folding_p (void)
if (TREE_THIS_VOLATILE (decl))
return false;
/* Avoid attempts to load constructors that was not streamed. */
if (in_lto_p && DECL_INITIAL (real_node->decl) == error_mark_node
&& real_node->body_removed)
return false;
/* If we do not have a constructor, we can't use it. */
if (DECL_INITIAL (real_node->decl) == error_mark_node
&& !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))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment