aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraph.c
diff options
context:
space:
mode:
authorIlya Enkovich <ilya.enkovich@intel.com>2014-08-18 13:26:06 +0000
committerKirill Yukhin <kyukhin@gcc.gnu.org>2014-08-18 13:26:06 +0000
commitd34af02260f54bf3b5180855daa57e77ae5383d4 (patch)
tree43d6d2e3c39272c10953c9024618ac52bea882be /gcc/cgraph.c
parent44f5982995af71f407b47de16e35a0276d88b862 (diff)
downloadgcc-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.c6
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))
{