aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2021-11-12 14:00:47 +0100
committerJan Hubicka <jh@suse.cz>2021-11-12 14:01:17 +0100
commit1b62cddcf091fb8cadf575246a7d3ff778650a6b (patch)
tree4208f349a01faf476692f9ab3cde7b6edec1bc70
parentb7e20480630e3eeb9eed8b3941da3b3f0c22c969 (diff)
downloadgcc-1b62cddcf091fb8cadf575246a7d3ff778650a6b.zip
gcc-1b62cddcf091fb8cadf575246a7d3ff778650a6b.tar.gz
gcc-1b62cddcf091fb8cadf575246a7d3ff778650a6b.tar.bz2
Fix ipa-modref pure/const discovery
PR ipa/103200 * ipa-modref.c (analyze_function, modref_propagate_in_scc): Do not mark pure/const function if there are side-effects.
-rw-r--r--gcc/ipa-modref.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/ipa-modref.c b/gcc/ipa-modref.c
index 7200625..44b3427 100644
--- a/gcc/ipa-modref.c
+++ b/gcc/ipa-modref.c
@@ -2790,7 +2790,8 @@ analyze_function (function *f, bool ipa)
if (!ipa && flag_ipa_pure_const)
{
- if (!summary->stores->every_base && !summary->stores->bases)
+ if (!summary->stores->every_base && !summary->stores->bases
+ && !summary->side_effects)
{
if (!summary->loads->every_base && !summary->loads->bases)
fixup_cfg = ipa_make_function_const
@@ -4380,7 +4381,8 @@ modref_propagate_in_scc (cgraph_node *component_node)
modref_summary_lto *summary_lto = summaries_lto
? summaries_lto->get (cur)
: NULL;
- if (summary && !summary->stores->every_base && !summary->stores->bases)
+ if (summary && !summary->stores->every_base && !summary->stores->bases
+ && !summary->side_effects)
{
if (!summary->loads->every_base && !summary->loads->bases)
pureconst |= ipa_make_function_const
@@ -4390,7 +4392,7 @@ modref_propagate_in_scc (cgraph_node *component_node)
(cur, summary->side_effects, false);
}
if (summary_lto && !summary_lto->stores->every_base
- && !summary_lto->stores->bases)
+ && !summary_lto->stores->bases && !summary_lto->side_effects)
{
if (!summary_lto->loads->every_base && !summary_lto->loads->bases)
pureconst |= ipa_make_function_const