From: Martin Jambor Date: Fri, 10 Jan 2020 19:30:56 +0000 (+0100) Subject: IPA-CP: Remove bogus static keyword (PR 92971) X-Git-Tag: releases/gcc-9.3.0~237 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b04e6eafd88706cbff32dfe192cd9e04df63c282;p=thirdparty%2Fgcc.git IPA-CP: Remove bogus static keyword (PR 92971) 2020-01-10 Martin Jambor Backport from mainline 2019-12-17 Martin Jambor PR ipa/92971 * Ipa-cp.c (cgraph_edge_brings_all_agg_vals_for_node): Fix definition of values, release memory on exit. testsuite/ * gcc.dg/ipa/ipcp-agg-12.c: New test. From-SVN: r280131 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1e4ff7e6e2b0..614fdc1cab9e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2020-01-10 Martin Jambor + + Backport from mainline + 2019-12-17 Martin Jambor + + PR ipa/92971 + * Ipa-cp.c (cgraph_edge_brings_all_agg_vals_for_node): Fix + definition of values, release memory on exit. + 2020-01-10 Przemyslaw Wirkus Backport from trunk diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index d414632e6026..36ec54d77534 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -4452,7 +4452,6 @@ cgraph_edge_brings_all_agg_vals_for_node (struct cgraph_edge *cs, for (i = 0; i < count; i++) { - static vec values = vec(); struct ipcp_param_lattices *plats; bool interesting = false; for (struct ipa_agg_replacement_value *av = aggval; av; av = av->next) @@ -4468,7 +4467,8 @@ cgraph_edge_brings_all_agg_vals_for_node (struct cgraph_edge *cs, if (plats->aggs_bottom) return false; - values = intersect_aggregates_with_edge (cs, i, values); + vec values + = intersect_aggregates_with_edge (cs, i, vNULL); if (!values.exists ()) return false; @@ -4492,6 +4492,7 @@ cgraph_edge_brings_all_agg_vals_for_node (struct cgraph_edge *cs, return false; } } + values.release (); } return true; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 659203f4707e..d4b034414d04 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2020-01-10 Martin Jambor + + Backport from mainline + 2019-12-17 Martin Jambor + + PR ipa/92971 + * gcc.dg/ipa/ipcp-agg-12.c: New test. + 2020-01-10 Przemyslaw Wirkus Backport from trunk diff --git a/gcc/testsuite/gcc.dg/ipa/ipcp-agg-12.c b/gcc/testsuite/gcc.dg/ipa/ipcp-agg-12.c new file mode 100644 index 000000000000..5c57913803ea --- /dev/null +++ b/gcc/testsuite/gcc.dg/ipa/ipcp-agg-12.c @@ -0,0 +1,53 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -fno-ipa-sra -fdump-ipa-cp-details --param=ipa-cp-eval-threshold=2" } */ + +struct S +{ + int a, b, c; +}; + +int __attribute__((noinline)) foo (int i, struct S s); +int __attribute__((noinline)) bar (int i, struct S s); +int __attribute__((noinline)) baz (int i, struct S s); + + +int __attribute__((noinline)) +bar (int i, struct S s) +{ + return baz (i, s); +} + +int __attribute__((noinline)) +baz (int i, struct S s) +{ + return foo (i, s); +} + +int __attribute__((noinline)) +foo (int i, struct S s) +{ + if (i == 2) + return 0; + else + return s.b * s.b + bar (i - 1, s); +} + +volatile int g; + +void entry (void) +{ + struct S s; + s.b = 4; + g = bar (g, s); +} + + +void entry2 (void) +{ + struct S s; + s.b = 6; + g = baz (g, s); +} + + +/* { dg-final { scan-ipa-dump-times "adding an extra caller" 2 "cp" } } */