mirror of git://gcc.gnu.org/git/gcc.git
re PR ipa/64872 (ICE: Segmentation fault during Chromium PGO build)
PR ipa/64872 * ipa-utils.c (ipa_merge_profiles): Add release argument. * ipa-icf.c (sem_function::merge): Do not release body when merging. * ipa-utils.h (ipa_merge_profiles): Update prototype. From-SVN: r220329
This commit is contained in:
parent
dfde35b359
commit
b730d1c991
|
|
@ -1,3 +1,10 @@
|
||||||
|
2015-01-29 Jan Hubicka <hubicka@ucw.cz>
|
||||||
|
|
||||||
|
PR ipa/64872
|
||||||
|
* ipa-utils.c (ipa_merge_profiles): Add release argument.
|
||||||
|
* ipa-icf.c (sem_function::merge): Do not release body when merging.
|
||||||
|
* ipa-utils.h (ipa_merge_profiles): Update prototype.
|
||||||
|
|
||||||
2015-02-01 Jakub Jelinek <jakub@redhat.com>
|
2015-02-01 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR debug/64817
|
PR debug/64817
|
||||||
|
|
|
||||||
|
|
@ -762,7 +762,7 @@ sem_function::merge (sem_item *alias_item)
|
||||||
}
|
}
|
||||||
|
|
||||||
alias->icf_merged = true;
|
alias->icf_merged = true;
|
||||||
ipa_merge_profiles (local_original, alias);
|
ipa_merge_profiles (local_original, alias, true);
|
||||||
alias->create_wrapper (local_original);
|
alias->create_wrapper (local_original);
|
||||||
|
|
||||||
if (dump_file)
|
if (dump_file)
|
||||||
|
|
|
||||||
|
|
@ -407,11 +407,13 @@ get_base_var (tree t)
|
||||||
|
|
||||||
|
|
||||||
/* SRC and DST are going to be merged. Take SRC's profile and merge it into
|
/* SRC and DST are going to be merged. Take SRC's profile and merge it into
|
||||||
DST so it is not going to be lost. Destroy SRC's body on the way. */
|
DST so it is not going to be lost. Possibly destroy SRC's body on the way
|
||||||
|
unless PRESERVE_BODY is set. */
|
||||||
|
|
||||||
void
|
void
|
||||||
ipa_merge_profiles (struct cgraph_node *dst,
|
ipa_merge_profiles (struct cgraph_node *dst,
|
||||||
struct cgraph_node *src)
|
struct cgraph_node *src,
|
||||||
|
bool preserve_body)
|
||||||
{
|
{
|
||||||
tree oldsrcdecl = src->decl;
|
tree oldsrcdecl = src->decl;
|
||||||
struct function *srccfun, *dstcfun;
|
struct function *srccfun, *dstcfun;
|
||||||
|
|
@ -652,7 +654,8 @@ ipa_merge_profiles (struct cgraph_node *dst,
|
||||||
e->frequency = freq;
|
e->frequency = freq;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
src->release_body ();
|
if (!preserve_body)
|
||||||
|
src->release_body ();
|
||||||
inline_update_overall_summary (dst);
|
inline_update_overall_summary (dst);
|
||||||
}
|
}
|
||||||
/* TODO: if there is no match, we can scale up. */
|
/* TODO: if there is no match, we can scale up. */
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ bool ipa_edge_within_scc (struct cgraph_edge *);
|
||||||
int ipa_reverse_postorder (struct cgraph_node **);
|
int ipa_reverse_postorder (struct cgraph_node **);
|
||||||
tree get_base_var (tree);
|
tree get_base_var (tree);
|
||||||
void ipa_merge_profiles (struct cgraph_node *dst,
|
void ipa_merge_profiles (struct cgraph_node *dst,
|
||||||
struct cgraph_node *src);
|
struct cgraph_node *src, bool preserve_body = false);
|
||||||
bool recursive_call_p (tree, tree);
|
bool recursive_call_p (tree, tree);
|
||||||
|
|
||||||
/* In ipa-profile.c */
|
/* In ipa-profile.c */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue