aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2021-11-11 14:39:19 +0100
committerJan Hubicka <jh@suse.cz>2021-11-11 14:39:19 +0100
commit6e30c48120500ef2e8643a7574636ed02567dbb6 (patch)
treecaa16297293051a1172012d9d00d10f889d5dfb4 /gcc
parent61396dfb2acfe956d420b279b2becec1c4f81ba2 (diff)
downloadgcc-6e30c48120500ef2e8643a7574636ed02567dbb6.zip
gcc-6e30c48120500ef2e8643a7574636ed02567dbb6.tar.gz
gcc-6e30c48120500ef2e8643a7574636ed02567dbb6.tar.bz2
Fix recursion discovery in ipa-pure-const
We make self recursive functions as looping of fear of endless recursion. This is done correctly for local pure/const and for non-trivial SCCs in callgraph, but for trivial SCCs we miss the flag. I think it is bad decision since infinite recursion will run out of stack, but changing it upsets some testcases and should be done independently. So this patch is fixing current behaviour to be consistent. gcc/ChangeLog: 2021-11-11 Jan Hubicka <hubicka@ucw.cz> * ipa-pure-const.c (propagate_pure_const): Self recursion is a side effects.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ipa-pure-const.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
index 84a028b..422b52f 100644
--- a/gcc/ipa-pure-const.c
+++ b/gcc/ipa-pure-const.c
@@ -1513,6 +1513,9 @@ propagate_pure_const (void)
enum pure_const_state_e edge_state = IPA_CONST;
bool edge_looping = false;
+ if (e->recursive_p ())
+ looping = true;
+
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, " Call to %s",