summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKewen Lin <linkw@linux.ibm.com>2020-01-14 02:34:10 -0600
committerKewen Lin <linkw@linux.ibm.com>2020-01-14 02:39:11 -0600
commitb38e86ddb7a9b6d7e87d7cc0b23983d027fcbd96 (patch)
treeac08636905c56ca66c946998800cc121edde8c52
parentedabbec31e3bfc9a9757f80c8610706ed00e5a1a (diff)
downloadgcc-b38e86ddb7a9b6d7e87d7cc0b23983d027fcbd96.tar.gz
Fix typo and avoid possible memory leak in average_num_loop_insns
Function average_num_loop_insns forgets to free loop body in early return. Besides, overflow comparison checks 1000000 (e6) but the return value is 100000 (e5), fix this typo. gcc/ChangeLog 2020-01-14 Kewen Lin <linkw@gcc.gnu.org> * cfgloopanal.c (average_num_loop_insns): Free bbs when early return, fix typo on return value.
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cfgloopanal.c5
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 07e5bebe909..f3301b16464 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2020-01-14 Kewen Lin <linkw@gcc.gnu.org>
+
+ * cfgloopanal.c (average_num_loop_insns): Free bbs when early return,
+ fix typo on return value.
+
2020-01-14 Xiong Hu Luo <luoxhu@linux.ibm.com>
PR ipa/69678
diff --git a/gcc/cfgloopanal.c b/gcc/cfgloopanal.c
index 392b1c337c4..0b33e8272a7 100644
--- a/gcc/cfgloopanal.c
+++ b/gcc/cfgloopanal.c
@@ -219,7 +219,10 @@ average_num_loop_insns (const class loop *loop)
ninsns += (sreal)binsns * bb->count.to_sreal_scale (loop->header->count);
/* Avoid overflows. */
if (ninsns > 1000000)
- return 100000;
+ {
+ free (bbs);
+ return 1000000;
+ }
}
free (bbs);