Commit 8b2d991b by Jan Hubicka Committed by Jan Hubicka

re PR ipa/83619 (ICE in inliner: caller edge count does not match BB count)


	PR ipa/83619
	* g++.dg/torture/pr83619.C: New testcase.
	* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
	frequencies.

From-SVN: r256850
parent 1f0267ac
2018-01-18 Jan Hubicka <hubicka@ucw.cz>
PR ipa/83619
* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
frequencies.
2018-01-18 Boris Kolpackov <boris@codesynthesis.com>
PR other/70268
......
......@@ -1327,6 +1327,7 @@ cgraph_edge::redirect_call_stmt_to_callee (void)
e->speculative = false;
e->caller->set_call_stmt_including_clones (e->call_stmt, new_stmt,
false);
e->count = gimple_bb (e->call_stmt)->count;
/* Fix edges for BUILT_IN_CHKP_BNDRET calls attached to the
processed call stmt. */
......@@ -1346,6 +1347,7 @@ cgraph_edge::redirect_call_stmt_to_callee (void)
}
e2->speculative = false;
e2->count = gimple_bb (e2->call_stmt)->count;
ref->speculative = false;
ref->stmt = NULL;
/* Indirect edges are not both in the call site hash.
......
2018-01-18 Jan Hubicka <hubicka@ucw.cz>
PR ipa/83619
* g++.dg/torture/pr83619.C: New testcase.
2018-01-18 Christophe Lyon <christophe.lyon@linaro.org>
* lib/target-supports.exp (check_effective_target_arm_arch_FUNC_ok):
......
// { dg-do compile }
int a;
class d
{
public:
virtual unsigned c ();
};
class e;
class i
{
void h ();
public:
void
operator= (e *f)
{
j<int>::c (f);
h ();
}
template <class> struct j
{
static void
c (e *g)
{
g->c ();
}
};
};
class k;
class l
{
public:
l (int);
k *operator-> ();
};
class e : public d
{
};
class m final : e
{
unsigned c ();
};
class k
{
public:
virtual int o (e *) = 0;
};
class H : d, k
{
int o (e *);
i n;
};
unsigned
m::c ()
{
l b = 0;
b->o (this);
return a;
}
int
H::o (e *p)
{
n = p;
return a;
}
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