diff options
author | Ilya Enkovich <ilya.enkovich@intel.com> | 2014-08-18 13:26:06 +0000 |
---|---|---|
committer | Kirill Yukhin <kyukhin@gcc.gnu.org> | 2014-08-18 13:26:06 +0000 |
commit | d34af02260f54bf3b5180855daa57e77ae5383d4 (patch) | |
tree | 43d6d2e3c39272c10953c9024618ac52bea882be /gcc/cgraph.c | |
parent | 44f5982995af71f407b47de16e35a0276d88b862 (diff) | |
download | gcc-d34af02260f54bf3b5180855daa57e77ae5383d4.zip gcc-d34af02260f54bf3b5180855daa57e77ae5383d4.tar.gz gcc-d34af02260f54bf3b5180855daa57e77ae5383d4.tar.bz2 |
re PR ipa/61800 (ICE: Segmentation fault during Firefox build)
PR ipa/61800
gcc/
* cgraph.h (cgraph_node::create_indirect_edge): Add
compute_indirect_info param.
* cgraph.c (cgraph_node::create_indirect_edge): Compute
indirect_info only when it is required.
* cgraphclones.c (cgraph_clone_edge): Do not recompute
indirect_info fore cloned indirect edge.
gcc/testsuite/
* g++.dg/ipa/pr61800.C: New.
From-SVN: r214099
Diffstat (limited to 'gcc/cgraph.c')
-rw-r--r-- | gcc/cgraph.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c index 370a96a..cb49cdc 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -942,7 +942,8 @@ cgraph_allocate_init_indirect_info (void) struct cgraph_edge * cgraph_node::create_indirect_edge (gimple call_stmt, int ecf_flags, - gcov_type count, int freq) + gcov_type count, int freq, + bool compute_indirect_info) { struct cgraph_edge *edge = cgraph_node::create_edge (this, NULL, call_stmt, count, freq, true); @@ -954,7 +955,8 @@ cgraph_node::create_indirect_edge (gimple call_stmt, int ecf_flags, edge->indirect_info->ecf_flags = ecf_flags; /* Record polymorphic call info. */ - if (call_stmt + if (compute_indirect_info + && call_stmt && (target = gimple_call_fn (call_stmt)) && virtual_method_call_p (target)) { |