From b38e86ddb7a9b6d7e87d7cc0b23983d027fcbd96 Mon Sep 17 00:00:00 2001 From: Kewen Lin Date: Tue, 14 Jan 2020 02:34:10 -0600 Subject: [PATCH] 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 * cfgloopanal.c (average_num_loop_insns): Free bbs when early return, fix typo on return value. --- gcc/ChangeLog | 5 +++++ gcc/cfgloopanal.c | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) 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 + + * cfgloopanal.c (average_num_loop_insns): Free bbs when early return, + fix typo on return value. + 2020-01-14 Xiong Hu Luo 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); -- 2.30.2