Hi, PR 93015 testcase - an empty main function compiled with -O0 -fipa-vrp -flto - shows that IPA-VRA can segfault when trying to access results of an analysis that has not been performed because of zero optimization level, -fno-ipa-cp etc.
Rather than adding another chain of opt_for_fn() the patch fixes it by what IPA-CP-BITS does, which is simply checking that info of a node is not NULL. Bootstrapped and tested on x86_64-linux. OK for trunk? Thanks, Martin 2019-12-20 Martin Jambor <mjam...@suse.cz> PR ipa/93015 * ipa-cp.c (ipcp_store_vr_results): Check that info exists testsuite/ * gcc.dg/lto/pr93015_0.c: New test. --- gcc/ipa-cp.c | 2 +- gcc/testsuite/gcc.dg/lto/pr93015_0.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/lto/pr93015_0.c diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index 243b064ee2c..329e259ede3 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -5661,7 +5661,7 @@ ipcp_store_vr_results (void) ipa_node_params *info = IPA_NODE_REF (node); bool found_useful_result = false; - if (!opt_for_fn (node->decl, flag_ipa_vrp)) + if (!info || !opt_for_fn (node->decl, flag_ipa_vrp)) { if (dump_file) fprintf (dump_file, "Not considering %s for VR discovery " diff --git a/gcc/testsuite/gcc.dg/lto/pr93015_0.c b/gcc/testsuite/gcc.dg/lto/pr93015_0.c new file mode 100644 index 00000000000..d084b5ad1e2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/pr93015_0.c @@ -0,0 +1,6 @@ +/* { dg-lto-do link } */ +/* { dg-lto-options { { -O0 -fipa-vrp -flto } } } */ + +int main() { + +} -- 2.24.0