Fix typo and avoid possible memory leak in average_num_loop_insns
authorKewen Lin <linkw@linux.ibm.com>
Tue, 14 Jan 2020 08:34:10 +0000 (02:34 -0600)
committerKewen Lin <linkw@linux.ibm.com>
Tue, 14 Jan 2020 08:39:11 +0000 (02:39 -0600)
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.

gcc/ChangeLog
gcc/cfgloopanal.c

index 07e5bebe909eabd884ff62fe371d9d95a8a63d31..f3301b164644911b0d5dbeff54580252fb07614f 100644 (file)
@@ -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
index 392b1c337c4769f04265a8ed094c66c364fd0521..0b33e8272a71587ded6070c18db948811a3e1841 100644 (file)
@@ -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);