Save ref->speculative_id before clone_reference.

PR ipa/94250
	* symtab.c (symtab_node::clone_references): Save speculative_id
	as ref may be overwritten by create_reference.
	(symtab_node::clone_referring): Likewise.
	(symtab_node::clone_reference): Likewise.
This commit is contained in:
Martin Liska 2020-03-23 08:57:06 +01:00
parent b809f0b658
commit 2fa4b1ffd6
No known key found for this signature in database
GPG Key ID: 4DC182DC0FA73785
2 changed files with 14 additions and 3 deletions

View File

@ -1,3 +1,11 @@
2020-03-23 Martin Liska <mliska@suse.cz>
PR ipa/94250
* symtab.c (symtab_node::clone_references): Save speculative_id
as ref may be overwritten by create_reference.
(symtab_node::clone_referring): Likewise.
(symtab_node::clone_reference): Likewise.
2020-03-22 Iain Sandoe <iain@sandoe.co.uk>
* config/i386/darwin.h (JUMP_TABLES_IN_TEXT_SECTION): Remove

View File

@ -670,11 +670,12 @@ symtab_node::clone_references (symtab_node *node)
{
bool speculative = ref->speculative;
unsigned int stmt_uid = ref->lto_stmt_uid;
unsigned int spec_id = ref->speculative_id;
ref2 = create_reference (ref->referred, ref->use, ref->stmt);
ref2->speculative = speculative;
ref2->lto_stmt_uid = stmt_uid;
ref2->speculative_id = ref->speculative_id;
ref2->speculative_id = spec_id;
}
}
@ -689,11 +690,12 @@ symtab_node::clone_referring (symtab_node *node)
{
bool speculative = ref->speculative;
unsigned int stmt_uid = ref->lto_stmt_uid;
unsigned int spec_id = ref->speculative_id;
ref2 = ref->referring->create_reference (this, ref->use, ref->stmt);
ref2->speculative = speculative;
ref2->lto_stmt_uid = stmt_uid;
ref2->speculative_id = ref->speculative_id;
ref2->speculative_id = spec_id;
}
}
@ -704,12 +706,13 @@ symtab_node::clone_reference (ipa_ref *ref, gimple *stmt)
{
bool speculative = ref->speculative;
unsigned int stmt_uid = ref->lto_stmt_uid;
unsigned int spec_id = ref->speculative_id;
ipa_ref *ref2;
ref2 = create_reference (ref->referred, ref->use, stmt);
ref2->speculative = speculative;
ref2->lto_stmt_uid = stmt_uid;
ref2->speculative_id = ref->speculative_id;
ref2->speculative_id = spec_id;
return ref2;
}