Do not fixup edges for a thunk in LTRANS (PR lto/78049)
PR lto/78049 * lto-streamer-in.c (fixup_call_stmt_edges_1): Replace value comparison with STMT_UID_NOT_IN_RANGE. (fixup_call_stmt_edges): Do not fixup edges of a thunk in LTRANS. From-SVN: r241380
This commit is contained in:
parent
2c35bbe14a
commit
3e23d1bcc4
|
@ -1,3 +1,11 @@
|
|||
2016-10-20 Martin Liska <mliska@suse.cz>
|
||||
|
||||
PR lto/78049
|
||||
* lto-streamer-in.c (fixup_call_stmt_edges_1): Replace value
|
||||
comparison with STMT_UID_NOT_IN_RANGE.
|
||||
(fixup_call_stmt_edges): Do not fixup edges of a thunk in
|
||||
LTRANS.
|
||||
|
||||
2016-10-20 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* compare-elim.c (conforming_compare): Accept UNSPECs.
|
||||
|
|
|
@ -889,13 +889,16 @@ static void
|
|||
fixup_call_stmt_edges_1 (struct cgraph_node *node, gimple **stmts,
|
||||
struct function *fn)
|
||||
{
|
||||
#define STMT_UID_NOT_IN_RANGE(uid) \
|
||||
(gimple_stmt_max_uid (fn) < uid || uid == 0)
|
||||
|
||||
struct cgraph_edge *cedge;
|
||||
struct ipa_ref *ref = NULL;
|
||||
unsigned int i;
|
||||
|
||||
for (cedge = node->callees; cedge; cedge = cedge->next_callee)
|
||||
{
|
||||
if (gimple_stmt_max_uid (fn) < cedge->lto_stmt_uid)
|
||||
if (STMT_UID_NOT_IN_RANGE (cedge->lto_stmt_uid))
|
||||
fatal_error (input_location,
|
||||
"Cgraph edge statement index out of range");
|
||||
cedge->call_stmt = as_a <gcall *> (stmts[cedge->lto_stmt_uid - 1]);
|
||||
|
@ -905,7 +908,7 @@ fixup_call_stmt_edges_1 (struct cgraph_node *node, gimple **stmts,
|
|||
}
|
||||
for (cedge = node->indirect_calls; cedge; cedge = cedge->next_callee)
|
||||
{
|
||||
if (gimple_stmt_max_uid (fn) < cedge->lto_stmt_uid)
|
||||
if (STMT_UID_NOT_IN_RANGE (cedge->lto_stmt_uid))
|
||||
fatal_error (input_location,
|
||||
"Cgraph edge statement index out of range");
|
||||
cedge->call_stmt = as_a <gcall *> (stmts[cedge->lto_stmt_uid - 1]);
|
||||
|
@ -915,7 +918,7 @@ fixup_call_stmt_edges_1 (struct cgraph_node *node, gimple **stmts,
|
|||
for (i = 0; node->iterate_reference (i, ref); i++)
|
||||
if (ref->lto_stmt_uid)
|
||||
{
|
||||
if (gimple_stmt_max_uid (fn) < ref->lto_stmt_uid)
|
||||
if (STMT_UID_NOT_IN_RANGE (ref->lto_stmt_uid))
|
||||
fatal_error (input_location,
|
||||
"Reference statement index out of range");
|
||||
ref->stmt = stmts[ref->lto_stmt_uid - 1];
|
||||
|
@ -937,6 +940,7 @@ fixup_call_stmt_edges (struct cgraph_node *orig, gimple **stmts)
|
|||
orig = orig->clone_of;
|
||||
fn = DECL_STRUCT_FUNCTION (orig->decl);
|
||||
|
||||
if (!orig->thunk.thunk_p)
|
||||
fixup_call_stmt_edges_1 (orig, stmts, fn);
|
||||
if (orig->clones)
|
||||
for (node = orig->clones; node != orig;)
|
||||
|
|
Loading…
Reference in New Issue