From: Martin Jambor Date: Fri, 23 Jul 2010 16:35:52 +0000 (+0200) Subject: re PR tree-optimization/44915 (ICE: SIGSEGV in walk_aliased_vdefs_1.constprop.42... X-Git-Tag: releases/gcc-4.6.0~5468 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=556ede6501233a0ee21184625a6efd04bb6f0b90;p=thirdparty%2Fgcc.git re PR tree-optimization/44915 (ICE: SIGSEGV in walk_aliased_vdefs_1.constprop.42 (tree-ssa-alias.c:1707) with -findirect-inlining) 2010-07-23 Martin Jambor PR tree-optimization/44915 * ipa-cp.c (cgraph_gate_cp): Also check that optimize is true. * ipa-inline.c (cgraph_mark_inline_edge): Likewise. (analyze_function): Likewise. * testsuite/g++.dg/torture/pr44915.C: New test. From-SVN: r162469 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e674f39ec13a..1701a548ed33 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2010-07-23 Martin Jambor + + PR tree-optimization/44915 + * ipa-cp.c (cgraph_gate_cp): Also check that optimize is true. + * ipa-inline.c (cgraph_mark_inline_edge): Likewise. + (analyze_function): Likewise. + 2010-07-23 Martin Jambor PR tree-optimization/44914 diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index be1956962a8c..6918273cba6a 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -1278,7 +1278,9 @@ ipcp_read_summary (void) static bool cgraph_gate_cp (void) { - return flag_ipa_cp; + /* FIXME: We should remove the optimize check after we ensure we never run + IPA passes when not optimizng. */ + return flag_ipa_cp && optimize; } struct ipa_opt_pass_d pass_ipa_cp = diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index b9e684489539..b5063bf8c228 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -334,7 +334,9 @@ cgraph_mark_inline_edge (struct cgraph_edge *e, bool update_original, overall_size += new_size - old_size; ncalls_inlined++; - if (flag_indirect_inlining) + /* FIXME: We should remove the optimize check after we ensure we never run + IPA passes when not optimizng. */ + if (flag_indirect_inlining && optimize) return ipa_propagate_indirect_call_infos (curr, new_edges); else return false; @@ -2085,7 +2087,9 @@ analyze_function (struct cgraph_node *node) current_function_decl = node->decl; compute_inline_parameters (node); - if (flag_indirect_inlining) + /* FIXME: We should remove the optimize check after we ensure we never run + IPA passes when not optimizng. */ + if (flag_indirect_inlining && optimize) inline_indirect_intraprocedural_analysis (node); current_function_decl = NULL; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fd8615fffac0..9000fabf8116 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-07-23 Martin Jambor + + PR tree-optimization/44915 + * g++.dg/torture/pr44915.C: New test. + 2010-07-23 Martin Jambor PR tree-optimization/44914 diff --git a/gcc/testsuite/g++.dg/torture/pr44915.C b/gcc/testsuite/g++.dg/torture/pr44915.C new file mode 100644 index 000000000000..ba7e9660622a --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr44915.C @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-findirect-inlining" } */ + +struct A; + +typedef void (A::*f_ptr) (); + +void dummy (f_ptr) { } + +void call_dummy (f_ptr cb) +{ + dummy (cb); +}